jquery单击函数冲突

时间:2010-11-25 07:42:48

标签: jquery

在点击功能中放置点击功能时出现问题。我也试过mousedown(),但同样的问题。执行 else 时,单击按钮。点击功能正在运行两次。

$('.tableData').click(function(){
    if($('tr.trSelected').length > 1) {
        $('.box-edit').addClass('btn-disabled');
        $('.box-info').addClass('btn-disabled');

        $('.nav-edit').unbind('click');
        $('.nav-info').unbind('click');

    }
    else {
        $('.box-edit').removeClass('btn-disabled');
        $('.box-info').removeClass('btn-disabled');

        $('.nav-edit').bind('click', function() {
            $('.sub-nav-edit').slideToggle(200);
            $('.box-edit').toggleClass('sub-nav-active');
        });
    }
});

2 个答案:

答案 0 :(得分:0)

您需要告诉它,使用stopImmediatePropagation(事件参数,我已添加e)来停止处理点击事件的冒泡。

$('.tableData').click(function(e){

    if($('tr.trSelected').length > 1) {
        $('.box-edit').addClass('btn-disabled');
        $('.box-info').addClass('btn-disabled');

        $('.nav-edit').unbind('click');
        $('.nav-info').unbind('click');

    }
    else {
        $('.box-edit').removeClass('btn-disabled');
        $('.box-info').removeClass('btn-disabled');
        e.stopImmediatePropagation();
        $('.nav-edit').bind('click', function() {
            $('.sub-nav-edit').slideToggle(200);
            $('.box-edit').toggleClass('sub-nav-active');
        });
    }
});

答案 1 :(得分:0)

也许您应该将if语句放入“click”功能并在那里测试当前是否选中了该按钮。这样你就不需要解绑/重新绑定函数了。