unbinding从类中的特定元素单击

时间:2013-09-24 14:35:53

标签: javascript jquery


     我遇到过一个场景。我有一些相同类的元素。所有这些都在点击时具有相同的事件处理程序。如果某些条件为真,我需要解除特定元素的点击功能。
这是我的片段

     $(".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()无法正常工作

3 个答案:

答案 0 :(得分:0)

您是否尝试在对象上使用.unbind()?

http://api.jquery.com/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');
        }
    });
}

http://jsfiddle.net/ChaitanyaMunipalle/xz8Up/