我认为应该正常工作的代码非常简单。稍微混淆为什么它不是。
我有一个箭头与正确的'当你点击它时,年变量会上升。当达到某一年时,这个div也会被授予“死亡”等级,我希望这可以杀死点击功能,所以我添加了“不是”#39;而不是'选择器作为点击功能的条件。但是,当您单击按钮时,年份会继续增加。
有什么想法吗?
打开控制台右侧的Try clicking the blue bar以查看结果
$('.right').not('.dead').click(function(){
year += 1;
console.log(year);
if (year === 2015){
$(this).addClass('dead');
}
});
答案 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类时,您需要删除该事件。