1

望ましい機能:新しい要素をページに追加する JQuery 関数があります。これらの新しい要素をクリックしてクリエーター関数を再度呼び出すことはできますが、作成後すぐにクリック関数を呼び出すべきではありません。

問題:関数が起動されると、新しい要素が追加され、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:これは実際のコードではなく、問題自体の抜粋です。

4

2 に答える 2

3

この部分:

.on("click", createDiv())

関数を呼び出していcreateDiv()ます。次のように、関数への参照を渡します。

.on("click", createDiv)

または、上記のように、匿名関数でラップすることもできます。

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

http://jsfiddle.net/QayWP/

于 2013-10-28T18:29:05.790 に答える