0

あるボタンを別のボタンに置​​き換えるには、次のコードを使用します。

("#addEntry").replaceWith($('<button class="btn default add-entry" id="update">Update</button>'));

Chrome 開発者ツールは、そのようなボタンが作成されたことを示しています。しかし、イベント ハンドラーを追加したいのに、うまくいきません。

$("#update").on("click", updateEntry);

function updateEntry () {
    alert("started");
};

誰かが私が間違っていることを説明できますか? 前もって感謝します

4

5 に答える 5

1

これはうまくいくはずです:

$(document).on("click", "#update", updateEntry);
于 2013-11-07T11:40:51.527 に答える
1

ボタンは動的に追加されるためevent delegation、イベントハンドラを登録するために使用する必要があります

// New way (jQuery 1.7+) - .on(events, selector, handler)
$(document).on('click', '#update', updateEntry);

可能であれば、documentここを最も近い静的親要素IDまたはclassに置き換えます。たとえばcontainerIDとします。次に、コードは次のようになります。

$('#container').on('click', '#update', updateEntry);

これにより、要素内の任意のボタンにイベントがアタッチされ、要素ツリー#container全体をチェックする必要がなくなり、document効率が向上します。

于 2013-11-07T11:41:37.007 に答える
0

委任を使用する必要があります。

$(document).on("click", "#update", updateEntry);

Direct and delegated eventsを見てください。

于 2013-11-07T11:41:02.237 に答える
0

試す

$("body").on("click","#update", updateEntry);
于 2013-11-07T11:41:04.493 に答える
0

ID ではなくクラスを使用してください。それ以外の場合は、ページに複数の ID があります。この方法も試してみてください。

$("body").on("click",".update", updateEntry);

function updateEntry () {
    alert("started");
};

注:(.update)クラスの場合

于 2013-11-07T11:41:16.180 に答える