我编写了两个 jQuery 函数,其简化版本是这样运行的:
$('button.class').not('.selected').on('click', function() {
console.log('not selected');
console.log($(this));
$(this).addClass('selected');
}
$('button.class.selected').on('click', function() {
console.log('selected');
console.log($(this));
$(this).removeClass('selected');
}
单击该按钮始终会在控制台中记录以下内容:
not selected
[<button class="someClass1 someClass2 selected">Text</button>]
在单击按钮之前,Web Inspector 会显示此内容:
<button class="someClass1 someClass2">Text</button>
点击它后:
<button class="someClass1 someClass2 selected">Text</button>
再次单击它不会改变任何内容。
切换addClass()
到toggleClass()
成功切换'selected'
打开和关闭,但仍然总是记录not selected
,这表明我的选择器发生了一些事情。为什么第一个函数总是被调用,即使'selected'
显然是与button
元素关联的类之一?
我在测试一些解决方案时注意到,硬编码'selected'
作为一类会button
导致相反的问题:只有第二个函数被调用,即使toggleClass()
按预期工作。通过 jQuery 添加的类不“算”为类吗?