jQuery,选择器匹配未设置的类?
我对一些jQuery代码上的classed bases开关有一个问题,我想知道我是否做错了什么或遇到了错误(可能是第一个) 参见本例:jQuery,选择器匹配未设置的类?,jquery,click,selector,behavior,removeclass,Jquery,Click,Selector,Behavior,Removeclass,我对一些jQuery代码上的classed bases开关有一个问题,我想知道我是否做错了什么或遇到了错误(可能是第一个) 参见本例: // Expecting only one run // Instead it keeps triggering $('.switch').click(function () { // Show message with active classes var classes = $(this).attr('class'); alert('
// Expecting only one run
// Instead it keeps triggering
$('.switch').click(function () {
// Show message with active classes
var classes = $(this).attr('class');
alert('Classes: '+classes);
// Remove class, it shouldn't trigger again?
$(this).removeClass('switch')
})
()
我有一个带有类的简单HTML标记。jQuery脚本匹配该类并将其绑定到单击事件。如果该事件被触发,它将删除该类及其前面的内容,我希望它不会第二次匹配(换句话说,它应该只执行一次)
但是,每次都会执行代码。这是正常行为吗?对dom更改使用事件委派:
$(document).on('click','.switch',function () {
var classes = $(this).attr('class');
alert('Classes: '+classes);
$(this).toggleClass('switch')
});
使用
将处理程序附加到元素的事件。对于每个事件类型,每个元素最多执行一次处理程序
事件将自身附加到元素(以您现在使用它的方式),因此无论该元素发生什么情况,只要它仍然处于活动状态,事件仍然可以触发。
$('.switch')。单击(…)
将处理程序绑定到元素。更改元素的属性不会更改绑定到该元素的处理程序。谢谢,这对我很有用。one()解决方案看起来也不错,但在我的情况下似乎不可用。谢谢,我不得不使用Milind Anantwar的解决方案,但这也很有用。@SvenvandeScheur很高兴你找到了解决方案。
$('.switch').one('click',function () {