我想通过其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
任何建议?
答案 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事件,则该元素应该绑定事件,然后您可以取消绑定
答案 4 :(得分:1)
嗯,这似乎是一种解决方法:
<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);