附加DOM对象时触发JQuery click事件

时间:2013-10-28 18:28:06

标签: jquery onclick click

所需功能:我有一个JQuery函数,可以向页面添加新元素。可以单击这些新元素再次调用创建者函数,但不应在创建后立即调用click函数。

问题:当触发函数时,会附加新元素,并且递归和无限地触发on(“click”)函数。

HTML:

<input type="button" value="test"/>
<div id="divContainer">

的JQuery:

$('input[type=button]').click( function() {
    createDiv();
});

function createDiv(){
    $("<div id='innerDiv'>Div element</div>").appendTo("#divContainer").on("click", createDiv());
}

JsFiddle: http://jsfiddle.net/uWXbA/

Obs:这不是真正的代码,它是问题本身的摘录。

2 个答案:

答案 0 :(得分:3)

这部分:

.on("click", createDiv())

正在调用createDiv()函数。您想传递对该函数的引用,如下所示:

.on("click", createDiv)

或者,如上所述,包装匿名函数也有效:

.click(function() {
    createDiv();
});

http://jsfiddle.net/QayWP/

答案 1 :(得分:0)

试试这个:

JQuery的

function createDiv(){
    $("#divContainer").append("<div class='innerDiv'>Div element</div>");
    $(".innerDiv:last").click(function(){
        createDiv();
    });
}

您应该使用属性类而不是id添加div,因为它可以重复。