-1


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

     $(".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()不工作

4

3 回答 3

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/

于 2013-09-24T14:55:52.837 回答
0

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

http://api.jquery.com/unbind/

于 2013-09-24T14:38:10.837 回答
0

尝试

$( "#foo").unbind( "click" );
于 2013-09-24T14:39:33.373 回答