我想捕获/处理指定项的加载(如果它是动态加载的)。
如果事件是click
,它可以正常工作:
$('#articles').on("click",".article",function(eo){
//...
});
这就是我的尝试:
$(document).on("load","input",function(){
alert(1);
});
这就是我将如何使用它:
<input type=hidden name='size' value=1>
<select name='size'>
<option value=0>A4</option>
<option value=1>A3</option><!--this will be selected, that is indicated with the hidden input-->
</select>
执行此操作的脚本:
$(document).on("load","input",function(e){
var name = e.attr("name");
var val = e.val();
if(name!=""&& typeof(e)!="undefined")
{
e.parent().find('select[name='+name+']').val(val);
}
});
如果有可能,我会问某种on()函数,因为手册说它是首选。
答案 0 :(得分:2)
我建议如下:
$(document).on('DOMNodeInserted', 'input', function(e) {
console.log($(this));
});
如果您担心使用未实现DomNodeInserted
的浏览器的人的体验,那么您当然可以在元素所在的位置触发带有自定义事件名称的事件。附加到DOM,然后使用on()
方法监听 事件:
$(document).on('customEventName', 'input', function(e) {
console.log($(this));
});
$('#add').click(
function() {
var i = $('input').length,
input = $('<input />',{'id' : 'input_' + i});
input.appendTo('body').trigger('customEventName');
});
参考文献:
答案 1 :(得分:0)
您可能需要查看jquery的livequery插件:
http://docs.jquery.com/Plugins/livequery
$('input')
.livequery(function(){
alert(1);
}
答案 2 :(得分:0)
如果它是在动态加载的元素上,请尝试.live()
,其工作方式与.bind()
类似,只会保持搜索对动态添加的元素开放,并在它们出现时绑定它们。
答案 3 :(得分:0)
如果您正在寻找特定元素,可以使用setTimeout
定期查找与新选择器匹配的元素。
function findNew() {
var $selected = $('.some-selector').filter(function() {
return !$(this).data('filtered');
});
$(document).trigger({type: 'elementadded', elements:$selected });
$selected.data('filtered', true);
setTimeout(findNew, 500);
}
$(document).on('elementadded', function(e) {
alert('found ' + e.elements.length + ' new elements.');
});
findNew();