当有一些李的元素时,取消绑定某些功能

时间:2014-05-19 11:08:18

标签: javascript jquery

我正在尝试打开并关闭一个.click功能。 这是我的jquery代码:

$('.original li').on('click',clonaCol);

$('.anade li').on('click',desselec);


var numeroli;

var max=3;
var numero;

$('.original').on('click', function(){ 

    numeroli = $('#count').children("li").length; alert(numeroli);

    if(numeroli>=3){
        $('.original li').off('click',clonaCol);
    }
    else{
        $('#dialog').show();
    }    

});

使用这段代码我可以在两列之间交换li元素,但我的问题是我无法停止第一个函数,我将li传递给第二个ul,当第二个ul上有3个元素时,关闭警告文本并推进测试。

1 个答案:

答案 0 :(得分:0)

这有点难以理解,并且用小提琴会更容易,但我很确定问题是事件冒泡,所以你的处理程序附加到.original将始终在附加到.original li的处理程序之后运行。基本上,这意味着当您单击.original ul中的列表项时编写它时,li的click事件运行函数clonaCol然后事件冒泡到.original并且解除绑定click事件处理程序。

要解决此问题,您可以检查列表项处理程序并返回false或显示您的对话框,或者如果超过3 li则显示您要执行的操作。像这样:

$('.original li').on('click',function () {
  if ($('#count li').length>=3) {
    $('#dialog').show();
  } else {
    clonaCol();
  }
});