这是一个证明我的观点的小提琴。当我使用$(document).on("click"....)
时,我仍然可以点击禁用按钮内的标签。 $("button").click(
..
有人可以解释这种差异吗?它是一个bug还是jQuery的一个特性?
编辑:我提出的解决方法:
$(document).on("click", "button > *", function() {
if ( $(this).parent().is(":disabled") )
{
return false;
}
});
答案 0 :(得分:1)
我认为此行为是由您应用该事件的元素产生的。在第一个示例中,您将事件绑定到文档。在第二个示例中,您将事件绑定到按钮。这是纯粹的推测,因为我没有查看jQuery源代码来实际查看使用$().on()
时执行的内容,但我认为选择器在事件触发后会被解析。
例如,document
选择click事件,解析选择器以测试它应该应用于哪个,然后执行该函数。在第二种情况下,在绑定click事件之前首先解析选择器。
答案 1 :(得分:0)
这一定是JQuery 1.7.1的一个错误。如果你移动到1.7.2或1.8,它就会消失。