.live() is deprecated and removed, don't use it at all version deprecated: 1.7, removed: 1.9
use on like this
$('body').on('blur change', '#mother input, #mother select', function () {
alert($(this).attr('id'));
});
Вопрос
Got this HTML
:
<div id="mother">
<select id="sel" name="sel">
<option value="1">Un</option>
<option value="2">Deux</option>
<option value="3">Trois</option>
</select>
<input id="in" name="in"/>
</div>
The mother
is in the page but both children, select
and input
are dynamically generated
Tried to call them by using something like:
$('body').on('blur change','#mother input, #mother select',function(){
alert($(this).attr('id'))
})
Javascript
is saying nothing all..
How can this be best done using on()
instead of live()
? ... because with live()
it was kinda easier to figure out.
Thanks.
Решение
.live() is deprecated and removed, don't use it at all version deprecated: 1.7, removed: 1.9
use on like this
$('body').on('blur change', '#mother input, #mother select', function () {
alert($(this).attr('id'));
});
Другие советы
Your events must be space separated: blur change
, not blur,change
.
You can also use this sintax :
<div id="mother">
<select id="sel" name="sel">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input id="in" name="in"/>
</div>
JS
$('body').on({
blur: function () {
alert("blur");
},
change: function () {
alert("change");
}
}, '#mother input, #mother select');
There is something wrong elsewhere in your page. I created a Fiddle that shows this working just fine: http://jsfiddle.net/evictor/Dnsm8/
<div id="mother">
</div>
JS:
$(function() {
$('body').on('blur change','#mother input, #mother select',function(){
alert($(this).attr('id'))
});
$('<input id="test" />').appendTo('#mother');
});