Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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 在创建元素时触发事件_Javascript_Jquery - Fatal编程技术网

Javascript 在创建元素时触发事件

Javascript 在创建元素时触发事件,javascript,jquery,Javascript,Jquery,我想在DOM中创建新分区时调用一个函数(即通过ajax调用动态创建)。我知道我可以使用live方法触发该函数。但是在实时方法中我应该使用什么事件?我的意思是,当一个新的部门被动态创建时,哪一个甚至会被触发 您可以使用DOMNodeInsertedmutation事件,但请注意,它们已被弃用,并且并非在所有浏览器中都受支持 更好的解决方案是编写自定义事件,如: $('#container').bind('MyAddEvent', function(){ alert('Was added')

我想在DOM中
创建新分区时调用一个函数(即通过ajax调用动态创建)。我知道我可以使用live方法触发该函数。但是在
实时方法中我应该使用什么
事件
?我的意思是,当一个新的部门被动态创建时,哪一个甚至会被触发

您可以使用
DOMNodeInserted
mutation事件,但请注意,它们已被弃用,并且并非在所有浏览器中都受支持

更好的解决方案是编写自定义事件,如:

$('#container').bind('MyAddEvent', function(){
    alert('Was added');
});
如果希望事件也应用于新元素,请使用上的

$('#container').on('MyAddEvent', '{selector}' ,function(){
    alert('Was added');
});
当您添加新的
(在ajax请求之后)时,使用
触发器触发该事件:

...
success: function(result){
    $('#container').append(result)
    ...
    ...
    $('#container').trigger('MyAddEvent');
} 
  • 请注意,
    live
    已被弃用,
    on
    是新家伙

如果不控制新的
div
s插入,则可以在每次x上检查DOM以查找新的div:

function checkForChanges()
{
    var newDivs = $('#container div').filter(function(){
            return !$(this).data('old')
        });

    ... //Do what you want with those divs      

    newDivs.data('old', true); // mark the div as old.

    setTimeout(checkForChanges, 1000); // Check the DOM again within a second.
}

$(checkForChanges);

演示(目前仅限于Webkit)。所以现在,你已经完蛋了
DomainNodeInserted
并非在所有浏览器中都可用,而且在可用的地方,速度非常慢。突变观察者的速度要快得多,但目前仅在Webkit中可用。

Thanx用于回复,但问题是我想在函数中使用新添加的除法中的attr,而且该除法可以在任何地方多次添加。我想我不能用$(这个)来挑出那个。有没有办法通过该功能访问新分区的内容?@Rahul。你可以把两者结合起来。对我来说,这似乎是最好的解决方案。在Ajax响应中添加代码来处理它。@epascarello但是Ajax调用会多次,并且会频繁添加新的分区。因此,如果我通过ajax执行此操作,相同的代码将在DOM中填充,并且以后添加的js代码可能会影响以前添加的分区,从而导致混乱。@Rahul。您可以使用某些属性标记旧的
div
s,以便忽略它,请参阅我的更新。显示完整的代码真的很有帮助@格多龙如果那是为了投票,我早就投票给你了:)