jQuery取消绑定点击不起作用

jquery unbind click doesn't work

本文关键字:不起作用 绑定 取消 jQuery      更新时间:2023-09-26

请帮我一把。提前感谢!这是简单的编码:

var $newbox = $( "<div/>" );
$newbox.addClass("init_box");
for(i=0; i<3; i++) {
    $("#game").append($newbox.clone().click(function(){
        $(this).addClass("select_box"); 
        $("div.init_box").unbind("click");
    }));
}
我想创建 3 个div,

一旦单击这 3 个div 中的任何一个,其他人就会解绑单击事件。但是上面的代码不起作用。

如果要使用 .

unbind(),则需要使用 .bind() 绑定点击处理程序;

我将使用 .on() 和

.off() 和命名空间事件处理程序,例如

var $newbox = $('<div/>', {
    'class': 'init_box'
}).on('click.select', function () {
    $(this).addClass("select_box");
    $("#game .init_box").off("click.select");
});
for (i = 0; i < 3; i++) {
    $newbox.clone(true, true).appendTo('#game').html(i)
}

演示:小提琴

这应该有效。

var $newbox = $( "<div/>" );
$newbox.addClass("init_box");
for(i=0; i<3; i++) {
    $newbox.clone().appendTo("#game").click(function(){
        $(this).addClass("select_box"); 
        $("div.init_box").unbind("click");
    });
}

在您的示例中,您尝试在将处理程序插入 DOM 之前将处理程序添加到对象,这不起作用。

必须先将其插入 DOM 中,然后添加处理程序。

或者,您可以使用实时绑定。http://api.jquery.com/on/