0

我想取消绑定通过其类绑定到元素的所有点击

元素是这样的:

<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");
    });
  });

单击未绑定,因为即使它是同一个元素,它也绑定到另一个类。

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

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

       }});

这也不起作用,并且点击被触发

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

有什么建议吗?

4

5 回答 5

4

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

$(document).on('click', function (e) {
 if($(this).hasClass('class')) {
  e.preventDefault();
  e.stopImmediatePropagation();
 }
});
于 2013-06-06T11:48:49.540 回答
2

它一定要是

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

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

于 2013-06-06T11:23:49.577 回答
1

你只试过吗

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

$(".isSortiDeService").off();
于 2013-06-06T11:22:06.950 回答
1

As of jquery 1.7 the use of .live has been deprecated so you perhaps shouldn't use it anymore: http://api.jquery.com/live/

If you bind the click event using .click instead of .live, the element should have the event bound to it and then you can unbind this

Example

于 2013-06-06T11:35:07.327 回答
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);
于 2013-06-06T11:36:22.880 回答