我正在尝试根据是否有分配给他们的CSS类来过滤按钮事件。
假设我有一个这样的按钮:
<button id="save-button" class="ui-state-default ui-corner-all">Save</button>
我想让jQuery选择当前不具有“ui-state-disabled”类的所有按钮。我正在使用的选择器如下所示:
$('#save-button:not(.ui-state-disabled)').click(function() {
...
});
单击该按钮时,我将调用另一个函数,执行一些操作,然后将“ui-state-disabled”类添加到按钮中。但是按钮仍然继续接受点击事件。
我猜这是因为两个可能的原因:
有任何意见吗?
答案 0 :(得分:3)
您可以使用.live()
做您想做的事情,如下所示:
$('#save-button:not(.ui-state-disabled)').live('click', function() {
...
});
或者,在click
处理程序触发时检查类,如下所示:
$('#save-button').click(function() {
if($(this).hasClass('ui-state-disabled')) return;
...
});
你的#1是正确的,选择器找到那时与匹配的元素并将点击处理程序绑定到它们......无论后来他们有什么类或ID ,处理程序绑定到元素。 .live()
侦听气泡并检查选择器在事件发生时匹配 ,因此它可以正常工作......或者你在click
处理程序中检查自己,就像我在第二个上面的选项。