8

私はこの簡単なコードを持っています。http://jsfiddle.net/borth/BmEZv/ リンクを 1 回クリックすると、問題なく動作します。もう一度クリックしても機能しません。DOM のロード後に html が html にロードされるため、.on、.bind、.delegate、および .live を試しました。非推奨になっている.liveを除いて、それらのどれも機能しません(私はjquery 1.7.2を使用しています)。

.live が機能する唯一の機能であり、他の機能が機能しない理由を誰かが説明できますか (または、他の機能で何か間違ったことをしている場合)。


$(document).ready(function(){
  $(".OpenPopup").bind('click', function(e){
      alert('test .OpenPopup');
      // do something
      return false;
  });
  $(".EditIcon").bind('click', function(){
      alert('test .EditIcon');
      // do something
      $("#ABC").html('<div class="EditIcon OpenPopup" pwidth="800" pheight="500" ptitle="EditText">click here again</div>');
  });
});


<div id="ABC"><div class="EditIcon OpenPopup" pwidth="800" pheight="500" ptitle="EditText">click here</div></div>
4

3 に答える 3

19
$(document).ready(function(){
        $(document.body).on('click', ".OpenPopup", function(e){
            alert('test .OpenPopup');
            // do something
            return false;
        });
        $(document.body).on('click', ".EditIcon", function(){
            alert('test .EditIcon');
            // do something
            $("#ABC").html('<div class="EditIcon OpenPopup" pwidth="800" pheight="500" ptitle="Edit Text">click here again</div>');
        });
    });
于 2013-01-07T23:43:49.740 に答える
2

.on()delegation の有無にかかわらず使用できます。以下は、委任を使用した on() の例です。

$("#ABC").on('click', ".OpenPopup", function(e){

http://jsfiddle.net/BmEZv/1/

于 2013-01-07T23:20:29.570 に答える
0

@Dhofcaに続いて、これは本当にうまくいきました。「this」キーワードで試した例を示しています。

$(document.body).on('click', ".query-result table tr", function () {
    var el = $(this);
    el.closest('table').find('tr').removeClass('dotted');
    el.addClass('dotted');
});
于 2013-09-06T21:07:16.370 に答える