0

alert() がふりをしたコンテンツのループ番号に関連付けられている一連の onclick イベントを動的に生成しています。私の問題は、現在、アラートが、ふりをしたコンテンツに関連付けられた i 番目のループではなく、最後のループの 'i' 値を出力することです。何かご意見は?

JavaScript:

for (i = 1; i < 4; i++) {

    prepend_content = '<a href="#" id="img1_link_' + i + '" onclick="alert(i);">foo</a>';
    $('#dynamic_div').prepend(prepend_content);

}

どうもありがとう。

4

2 に答える 2

2

以前と同じように連結してみてください。

for (i = 1; i < 4; i++) {
    prepend_content = '<a href="#" id="img1_link_' + i + '" onclick="alert(' + i + ');">foo</a>';
    $('#dynamic_div').prepend(prepend_content);
}

iand prepend_content(with ) をまだ宣言しvarていない場合は、それらがグローバル スコープに漏れないように宣言することをお勧めします。

同時に、インライン イベント ハンドラで HTML を使用または追加することはお勧めしません。次のような要素を作成してみてください。

prepend_content = $("<a>").attr({
    href: "#",
    id: "img1_link_" + i
}).text("foo").on("click", (function (i) {
    return function () {
        alert(i);
    };
})(i));

デモ: http://jsfiddle.net/ujv4y/

ハンドラーのすぐに呼び出される関数の追加の使用法は、ループ内clickの値をキャプチャするクロージャーを作成することです。i

于 2013-04-08T05:09:15.443 に答える
0

アラートのカリー化を使用して関数を作成できます (より複雑なものの場合)。

function(i) {
return function(){alert(i);}
}
于 2013-04-08T05:12:06.157 に答える