1

ボタンの ID を変更すると、on.("click") で新しい ID を見つけることができません。関数 console.log() は変更されたことを検出しますが、 on() 関数では検出できません。

HTML:

<form id="formName" action="" method="post">
    <input type="submit" id="submitBtn" value="Submit" />
</form>
<button id="change">Change</button>

JS:

$("#change").on("click", function(){
    $("#submitBtn").attr("id", "NewBtn"); 
});

$("#formName").submit(function(e){
    e.preventDefault();
});

$("#NewBtn").on("click", function(){
    alert("Hello"); 
});

そのため、変更をクリックした後に「こんにちは」と警告する必要があります。inspect要素で確認したIDを変更します。

フィドル: http://jsfiddle.net/WvbXX/

4

3 に答える 3

5

変化する

$("#NewBtn").on("click", function(){

$(document).on("click", "#NewBtn", function(){

この理由は、デリゲート形式の.on()を使用したいからです。この呼び出しは、2 番目のパラメーターとして「文字列」を取るという点で少し異なります。その文字列は「動的」要素のセレクターですが、メインセレクターは親コンテナー (動的に作成されない) またはdocumentそれ自体である必要があります。

jsフィドル

于 2013-05-27T17:14:26.260 に答える
0

初めてページの読み込み時に newBtn の onclick イベントを設定していますが、残念ながら newBtn はその時点では利用できません。したがって、ID を変更すると、newBtn の onclick 関数はトリガーされません。

以下のようにIDを変更している同じ関数内でnewBtnのonclickイベントを設定して、それを機能させるために1つのことを行うことができます。

$("#change").on("click", function(){
    $("#submitBtn").attr("id", "NewBtn"); 
    // set on click event for new button
    $("#NewBtn").on("click", function(){
    alert("Hello"); 
});
});
于 2013-05-27T17:29:39.057 に答える
-1

.attr()関数にはコールバックがないため、使用して間隔を設定しない限りチェックできませんsetIntervalが、関数自体はすぐに実行されるため、必要ありません。

手の問題を解決するには、tymeJV によって提案されたイベント委譲が正しい方法です。

于 2013-05-27T17:19:23.170 に答える