我遇到过一个场景。我有一些相同类的元素。所有这些都在点击时具有相同的事件处理程序。如果某些条件为真,我需要解除特定元素的点击功能。
这是我的片段
$(".del_grp").die().live('click', deleteGroup);
$(".del_grp").css('opacity','1');
$(".del_grp").css('cursor','pointer');
if($('.map_unit').length === 1){
$('.grp').each(function(){
if($(this).next().children().length !==0 ){
$(this).find('.del_grp').die('click');
$(this).find('.del_grp').css('opacity','0.5');
$(this).find('.del_grp').css('cursor','default');
}
});
}
此处,CSS
属性工作正常,die()
无法正常工作
答案 0 :(得分:0)
您是否尝试在对象上使用.unbind()?
答案 1 :(得分:0)
尝试
$( "#foo").unbind( "click" );
答案 2 :(得分:0)
使用.off()
代替.die()
和.on()
代替.live()
。它工作正常。请参阅下面的演示
var deleteGroup = function () {
console.log('del group clicked');
};
$(".del_grp").off().on('click', deleteGroup);
$(".del_grp").css('opacity','1');
$(".del_grp").css('cursor','pointer');
if($('.map_unit').length === 1){
$('.grp').each(function(){
console.log('for each group');
if($(this).next().children().length !==0 ){
$(this).find('.del_grp').off('click', deleteGroup);
$(this).find('.del_grp').css('opacity','0.5');
$(this).find('.del_grp').css('cursor','default');
}
});
}