使用jQuery添加<li>元素后的触发器功能?

时间:2016-01-21 18:27:08

标签: javascript jquery html css

我有一个html ul列表和一个创建新li元素的按钮添加。 我需要的是在创建新的li元素之后调用一个函数,但我面临的问题是按钮的点击事件(或它做了什么)以及添加新函数的函数{我无法访问{1}}元素,因此我可以访问的唯一方法是通过新事件绑定到按钮。

如果我为按钮创建一个新的绑定事件,我无法做任何事情,因为在创建新li之前触发了事件。

li

所以我需要的是能够检测到新的$addButton.bind("click", myFunction); 被添加到主li的东西。 什么是最好的方法?

我重复以防万一...我无法访问创建ul元素的函数。

3 个答案:

答案 0 :(得分:1)

您可以使用DOMNodeInserted事件。

$('#list').on('DOMNodeInserted', 'li', function(e) {
    console.log(e);
});

将为列表中添加的每个新li元素触发。

小提琴:https://jsfiddle.net/x7po0dwe/

IE&gt; 9

<强>更新

我推荐这个解决方案而不是我的解决方案:https://stackoverflow.com/a/10343915/1516112

答案 1 :(得分:1)

您可以使用循环函数捕获li创建,该函数在单击该按钮时触发:

$("#my_btn").click(function(){
    lis = $('li').length;
    check_creation = function(){

        setTimeout(function(){
            if(lis == $('li').length){
                //make another loop
                check_creation();
            }else{
                //Do what is necessary
            }
        }, 50);
    }
    check_creation();
});

答案 2 :(得分:0)

扩展@nikoskip提示您可以添加MutationObserver对象来收听Function CopyVerify-Item { DynamicParam { # Get all the parameters from Copy-Item } Process { Copy-Item $PSBoundParameters # Do my extra code here to verify the copy } } 中的更改。当你已经在DOM中拥有ul时,你会添加它,所以最好把它放在DOM ready事件中。

检查演示:Fiddle

ul

进一步检查:Mozilla API