所需功能:我有一个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:这不是真正的代码,它是问题本身的摘录。
答案 0 :(得分:3)
这部分:
.on("click", createDiv())
正在调用createDiv()
函数。您想传递对该函数的引用,如下所示:
.on("click", createDiv)
或者,如上所述,包装匿名函数也有效:
.click(function() {
createDiv();
});
答案 1 :(得分:0)
试试这个:
JQuery的
function createDiv(){
$("#divContainer").append("<div class='innerDiv'>Div element</div>");
$(".innerDiv:last").click(function(){
createDiv();
});
}
您应该使用属性类而不是id添加div,因为它可以重复。