Jquery die()没有解除与live()绑定的事件的绑定

时间:2014-11-18 05:23:42

标签: jquery

我在使用struts2的项目中使用jquery 1.8.0。我正在使用jquery live()将click事件绑定到所有现有元素以及由ajax动态添加的所有未来元素。我在每次加载页面之前对目标元素调用die(),然后在目标元素上调用live(),但在我的情况下,die()不会解除事件处理程序已经与目标元素的联系。问题是与特定目标元素附加的点击事件的事件处理程序与页面加载的时间一样多。所以事件会多次触发。请帮我找到解决方案。

这是我的代码:

<sj:a href="#" cssClass="edit fileShareClass" id="cont_%{#id}"  cssStyle="color: #334c6e;text-decoration:none;" >Share</sj:a> 



 jQuery(function ($) {
 $('.fileShareClass').die('click');
$('.fileShareClass').live('click',function (e) {
    e=$(this);
    var shareToContactId=$(e).attr('id').split('_')[1];


     $.get("./file_share.action?shareType=multiple&folderId=0&fromPage=listContactPage&shareToContactId="+shareToContactId, function(data){
        $('#fileShareDiv').empty();
        $('#fileShareDiv').append(data);
    }); 


});
});

还尝试使用on()和off(),如下所示

       jQuery(function ($) {

       $(document).off('click','.fileShareClass');
       $(document).on('click','.fileShareClass',function (e) {
        e=$(this);
       var shareToContactId=$(e).attr('id').split('_')[1];


       $.get("./file_share.action?shareType=multiple&folderId=0&fromPage=listContactPage&shareToContactId="+shareToContactId, function(data){
        $('#fileShareDiv').empty();
        $('#fileShareDiv').append(data);
    }); 


});
}); 

1 个答案:

答案 0 :(得分:2)

使用.on().off() -

从jQuery 1.7开始.live().die()被删除

请参阅offical docs