2

请帮帮我。在此先感谢!这是简单的编码:

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 中的任何一个,其他人将取消绑定单击事件。但是上面的代码不起作用。

4

3 回答 3

2

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

于 2013-10-22T02:02:48.170 回答
1

我将.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)
}

演示:小提琴

于 2013-10-22T02:20:43.630 回答
0

这应该有效。

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/

于 2013-10-22T02:06:21.937 回答