这是一个 fiddle 来证明我的观点。当我使用 $(document).on("click"....)
时,我仍然可以单击禁用按钮内的标签。 $("button").click(
..
有人可以解释一下这种差异吗?这是一个错误,还是 jQuery 的一个功能?
编辑:我想出的解决方法:
$(document).on("click", "button > *", function() {
if ( $(this).parent().is(":disabled") )
{
return false;
}
});
最佳答案
我认为此行为是由您应用事件的元素引起的。在第一个示例中,您将事件绑定(bind)到文档。在第二个示例中,您将事件绑定(bind)到按钮。这纯粹是猜测,因为我没有查看 jQuery 源代码来实际了解使用 $().on()
时执行的内容,但我认为选择器在事件触发后已解析.
例如,document
获取点击事件,解析选择器以测试它应该应用于哪个,然后执行该函数。第二种情况是先解析选择器,然后再绑定(bind)点击事件。
关于jquery - 即使按钮被禁用,<button> 内的标签也可点击 - 仅限 Webkit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865589/