0

ページが読み込まれたときに存在する div があります。ボタンと別のボタンを追加します。次に、ボタンをクリックして に追加します。

これまでのところ、最初の部分は機能していますが、動的に作成された要素に追加することはできません。

$(document).ready(function () {

    // THIS WORKS
    $("#Value").change(function () {
        var value = $("#Value").val();
        $("#Question_Field").empty();
        for (var i = 1; i <= value; i++) {
            $("#Question_Field").append('<input type="button" id="button" /><div id="test"></div>');
        }
    });

    // THIS DOES NOT WORK
    $("#test").click(function () {
        console.log("Click");
        ("#test").append(STUFF);
    });
});

クリックを記録することすらありません。

4

2 に答える 2

1

主な問題は 2 つあります。

  1. イベントをフックするとき、#test要素はまだ存在しないため、何もフックされません。

  2. 同じ で複数の要素を作成していますid

また、append通話$の先頭に a がありません。

イベント委任を使用して最初のものを修正できます (このコードも同様に修正appendされます)。

$(document).on('click', '#test', function () {
    console.log("Click");
    $("#test").append(STUFF);
});

clickこれは jQuery にイベントをフックするように指示しますdocumentが、イベントが発生した場合、または指定されたセレクター ( ) に一致する要素を通過した場合にのみハンドラーを起動#testします。

2 番目の問題である同じ要素を持つ複数の要素を修正するには、id要素を出力するループを変更する必要があります。ではなくクラスを使用したいということもあるでしょうid

于 2013-02-27T16:34:01.703 に答える
0

click呼び出されたときに存在する要素のみを処理できます。jQuery のバージョンに応じて、http ://api.jquery.com/live/または.live() http://api.jquery.com/on/を確認する必要があります。.on()

于 2013-02-27T16:33:28.457 に答える