替代jQuery的现场,可以工作(Alternative to jquery live that c

2019-07-17 23:14发布

我有这个简单的代码。 http://jsfiddle.net/borth/BmEZv/如果你点击一次,它工作正常。 如果你点击它第二次,这是行不通的。 由于HTML被加载到HTML DOM中加载之后,我已经试过。对,.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>

Answer 1:

$(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>');
        });
    });


Answer 2:

.on()可以使用具有或不具有授权 ,下面是对()使用委托的例子。

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

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



Answer 3:

继@Dhofca这果然奏效。 我只是展示我与“这个”关键字尝试的例子。

$(document.body).on('click', ".query-result table tr", function () {
    var el = $(this);
    el.closest('table').find('tr').removeClass('dotted');
    el.addClass('dotted');
});


文章来源: Alternative to jquery live that can work