1

我想捕获/处理指定项目的负载(如果它是动态加载的)。

如果事件是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() 函数,因为手册说它是首选。

4

4 回答 4

2

我建议如下:

$(document).on('DOMNodeInserted', 'input', function(e) {
    console.log($(this));
});

JS 小提琴演示

如果您担心那些使用未实现的浏览器的体验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');
    });​

JS 小提琴演示


参考:

于 2012-05-21T09:55:14.123 回答
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();
于 2012-05-21T09:36:02.723 回答
0

你可能想看看 jquery 的 livequery 插件:

http://docs.jquery.com/Plugins/livequery

$('input') 
.livequery(function(){ 
alert(1);
}
于 2012-05-21T09:29:25.263 回答
0

如果它在动态加载的元素上 try .live(),它的工作方式就像.bind()只保持搜索打开动态添加的元素并在它们出现时绑定它们。

于 2012-05-21T09:29:45.877 回答