Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery-捕获指定元素的加载_Javascript_Jquery - Fatal编程技术网

Javascript jquery-捕获指定元素的加载

Javascript jquery-捕获指定元素的加载,javascript,jquery,Javascript,Jquery,我希望捕获/处理指定项目的加载(如果是动态加载的话) 如果事件是单击它工作正常: $('#articles').on("click",".article",function(eo){ //... }); 这就是我尝试过的: $(document).on("load","input",function(){ alert(1); });​ 我会这样使用它: <input type=hidden name='size' value

我希望捕获/处理指定项目的加载(如果是动态加载的话)

如果事件是
单击
它工作正常:

$('#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>


如果可能的话,我会问一些on()函数,因为手册上说它是首选函数。

您可能想看看用于jquery的livequery插件:


如果是在动态加载的元素上,请尝试
.live()
,它的工作原理类似于
.bind()
,只会打开搜索动态添加的元素,并在它们出现时进行绑定。

如果要查找特定元素,您可以使用
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();

我建议如下:

$(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');
    });​
$(文档).on('customEventName','input',函数(e){
log($(this));
});
$('#添加')。单击(
函数(){
变量i=$('input')。长度,
input=$('',{'id':'input_'+i});
input.appendTo('body').trigger('customEventName');
});​


参考资料:


如果在
输入
上预期发生
加载
事件,您想做什么……您确定要做什么吗?顺便问一下,你在干什么?@ParthThakkar查看我的最新问题<在jQuery 7.1+中,code>on()
已被替换为
live()
live()
现在已被弃用(不应使用)。在jQuery 7及以下版本中,上的文档建议用户优先使用
live()
$(document).on('DOMNodeInserted', 'input', function(e) {
    console.log($(this));
});
$(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');
    });​