2016-12-14 1 views
0

ボタン 'A'がクリックされたときに 'B'のIDを変更し、Jqueryを使用して 'B'のクリックイベントをリッスンするが、コードが機能しない場合 this私のコードの例です:あなたが使用している現在idを変更した後にリッスンするイベント

$(function() { 

    $(".nuttonA").click(
     function() { 

      $("#buttonB").attr("id","notButtonB"); 
     }); 

    $("#notButtonB").click(function(){ 
     console.log(" notButtonB is clicked "); //show nothing 
    }); 
}); 
+2

なぜidを変更しますか?おそらくあなたが聞いているクラスまたはデータ属性を追加する –

+0

私はこの場合のJavaScriptの動作を理解したい – mustafa918

答えて

1

イベントの委任が必要だと思います。これを試してみてください:

$(function() { 

    $(".buttonA").click(
     function() { 

      $("#buttonB").attr("id","notButtonB"); 
     }); 

    $("body").on("click", "#notButtonB",function(){ 
     console.log(" notButtonB is clicked "); //show nothing 
    }); 
}); 
+0

ありがとう、それは動作します – mustafa918

1

は、あなたのコードは、イベントバインディング呼び出しを行う時にページ上に存在する要素にアタッチれる「直接」結合と呼ばれています。

操作プロパティーを使用する場合は、委任イベントアプローチを使用してEvent Delegationを使用する必要があります。

一般的な構文

$(document).on('event','selector',callback_function) 

例は

$(document).on('click', ".nuttonA", function(){ 
    $("#buttonB").attr("id","notButtonB"); 
}); 
$(document).on('click', "#notButtonB", function(){ 
    //Your code 
}); 

documentの代わりに、あなたは、最寄りの静的なコンテナを使用する必要があります。

関連する問題