取消绑定所有单击绑定到元素类

时间:2013-06-06 11:17:36

标签: jquery html css unbind

我想通过其classess

取消绑定绑定到元素的所有点击

元素是这样的:

<i  class="icon-edit edit <%=AgentData.isSortiDeService(agent)%>" alt="<%=noteEchelle.getIdNote()%>"></i> //where isSortieDeService is a java method which returns a 

string,此字符串的值可以是''或'isSortiDeService'

鉴于像这样的元素可能有一些绑定点击如下:

//******************modifier la notation
       $(".edit").live("click",function(){ 
        var idNote = $(this).attr("alt");
         $("#divBody").empty();
         $("#divBody").load("<%=path%>/situationAdministrative/notation/editNote.jsp",{idNote:idNote});
         $("#divTitle").empty();
         $("#divTitle").append('Modifier la note');
         $("#div").css('width','650px');
         $("#div").modal({ dynamic: true });
          });

所以我试过这个

       $(".isSortiDeService").die('click').unbind("click").off("click").click(function(){
   alert("Cet agent n'est plus en service. Vous ne pouvez plus effectuer cette opération");
    });
  });

点击不是ubinded,因为即使它是相同的元素,它也被绑定到其他类。

所以我尝试了其他解决方案

  $('*').each(function(){
       if($(this).hasClass("isSortiDeService"))
       { $(this).die('click').unbind("click").off("click").click(function(){
       alert("Cet agent n'est plus en service. Vous ne pouvez plus effectuer cette opération");
        });

       }});

这也无法正常工作,点击就会被触发

我将表达这样的问题:我有一个具有多个类的元素,如果我的元素有一个特定的类,我想解除绑定到其他类的所有点击,但显然解除绑定或关闭或死亡的工作选择器:所以相同的classe

任何建议?

5 个答案:

答案 0 :(得分:4)

如果点击的项目具有特定类别,请使用以下代码。

$(document).on('click', function (e) {
 if($(this).hasClass('class')) {
  e.preventDefault();
  e.stopImmediatePropagation();
 }
});

答案 1 :(得分:2)

必须是

$(".isSortiDeService").off('click');

只删除附加到元素的所有点击处理程序。

答案 2 :(得分:1)

你是否只尝试

从像这样的元素中删除所有事件处理程序?

$(".isSortiDeService").off();

答案 3 :(得分:1)

自jquery 1.7起,.live的使用已被弃用,因此您可能不应再使用它:http://api.jquery.com/live/

如果使用.click而不是.live绑定click事件,则该元素应该绑定事件,然后您可以取消绑定

Example

答案 4 :(得分:1)

嗯,这似乎是一种解决方法:

http://jsfiddle.net/cnu4u/

<div class="test test2"></div>

{此处与.on()}

一起使用的委托
$(document).on('click','.test2',$.noop);
var arrClass = $('.test').attr('class').split(' ');
$.each(arrClass,function(i){
    $(document).off('click','.'+arrClass[i]);
});
console.log($._data(document,'events').click);