不是选择器不是在jQuery中工作

时间:2015-10-22 13:18:30

标签: jquery html css

我认为应该正常工作的代码非常简单。稍微混淆为什么它不是。

我有一个箭头与正确的'当你点击它时,年变量会上升。当达到某一年时,这个div也会被授予“死亡”等级,我希望这可以杀死点击功能,所以我添加了“不是”#39;而不是'选择器作为点击功能的条件。但是,当您单击按钮时,年份会继续增加。

有什么想法吗?

打开控制台右侧的

Try clicking the blue bar以查看结果

$('.right').not('.dead').click(function(){
    year += 1;
    console.log(year);
    if (year === 2015){
        $(this).addClass('dead');
    }
});

4 个答案:

答案 0 :(得分:5)

代码的$('.right').not('.dead')部分仅评估一次;不是每次点击其中一个。

您可以尝试使用以下内容:

$('.right').click(function(){
    if ($(this).hasClass('dead')) { return; }
    year += 1;
    console.log(year);
    if (year === 2015){
        $(this).addClass('dead');
    }
});

答案 1 :(得分:3)

您创建了一个在加载页面时不存在的绑定,因此您需要使用.on()的事件委派语法来处理动态添加的事件。从以下位置更改选择器:

$('.right').not('.dead').click(function(){

为:

$('.container').on('click', '.right:not(".dead")' ,function () {

<强> jsFiddle example

答案 2 :(得分:2)

not仅作为绑定内容的初始过滤器,而不是不断检查以查看是否应该处理绑定事件。

答案 3 :(得分:0)

如果在以下情况下未添加.dead类:

$('.right').not('.dead')

被调用它会将这些事件附加到所有这些元素。之后不会再继续检查,以确保这些元素不具备该类别。添加.dead类时,您需要删除该事件。