当存在一些li's元素时,取消绑定某些函数

unbind some function when there are some li's elements

本文关键字:取消 绑定 元素 函数 存在 li      更新时间:2023-09-26

我正在尝试打开和关闭一个。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个元素时,发出警告文本并推进测试。

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

要解决这个问题,您可以在列表项处理程序中执行检查并返回false或显示您的对话框或任何您想要做的事情,如果有超过3英里。像这样:

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