0

過去 2 ~ 3 時間、この問題を修正しようとしてきましたが、最終的にあきらめました。これは私の javascript/jquery の一部です。

$(function() {  
    $('#ob').change(function() {
       var id = $("#ob").val();  
       var form_data = {
           id: id,
           OB: 3 
       };

       $.ajax({
           url: "changeinfo.php",
           type: 'POST',
           data: form_data,
           success: function(data) {
               $("#finfoob3").html(data);                             
           }
       });

       return false; 
   });
});  

上記は、変更時に DIV 要素を正常に変更します。

ただし、その DIV 要素には、動作しない id=obt3 のボタンがありました。実は、名前を別のものに上書きしていました。別の POST 値 OB を AJAX 呼び出しに送信し、それを obt と連結して obt3 にします。次に、ボタンの ID を obt3 に設定しましたが、それでもクリック イベントに応答しません。

Google Chrome で要素を検査しようとしましたが、要素の ID は obt3 に正常に変更されましたが、クリック イベントには応答しませんでした。

4

3 に答える 3

0

これは役立つかもしれません。

$(document).on("click", "#obt3", function() {
       //do whatever
   });

ここでは、動的に作成されたすべての#obt3要素を使用してドキュメントをバインドしています。

于 2012-11-01T18:11:50.117 に答える
0

私があなたの質問を正しく理解していれば。id を持つ div がfinfoob3あり、この div には id を持つボタンがありobt3、このボタンにはイベント クリック ハンドラーがあり、id を持つ別の要素があり、トリガーを変更して ajax を呼び出し、ボタンでobいくつかの html コードを返します。obt3以前のボタンと同じですが、クリックイベントに応答しません

そして、このobt3イベントハンドラーは次のようなものです

$('#obt3').click(function(){ 
    //Some code which you want to perform
});

しかし、それは機能していないので、に変更します

$('#finfoob3').on('click', '#obt3' ,function(){ 
    //Some code which you want to perform
});

必要に応じて動作しますが、jquery バージョン 1.6 以降を使用していることを確認してください。

于 2012-11-01T18:15:50.143 に答える
0

問題は、コンテンツを置き換えると、#finfoob3そこに存在するすべてのノードとそのすべてのイベント ハンドラーが破壊されることです。これを処理するには、次の 2 つの方法があります。

  • div コンテンツを置き換えた後、必要なイベント ハンドラーを再作成します。
  • イベント デリゲーションを使用してイベント ハンドラーを にアタッチし#finfoob3、内容を変更してもイベント ハンドラーが破棄されないようにします。

jQuery を使用しているため、.on()関数を確認する必要があります。これにより、イベント委任を簡単に定義できます。

于 2012-11-01T18:07:20.350 に答える