【问题标题】:Tags inside <button> clickable even if button is disabled - Webkit only<button> 内的标签即使按钮被禁用也可点击 - 仅限 Webkit
【发布时间】:2012-08-08 13:27:24
【问题描述】:

这里有一个小提琴来证明我的观点。当我使用$(document).on("click"....) 时,我仍然可以单击禁用按钮内的标签。 $("button").click(.. 不会发生此行为。

FIDDLE

有人可以解释这种差异吗?是 bug 还是 jQuery 的特性?

编辑:我想出的解决方法:

$(document).on("click", "button > *", function() {
    if ( $(this).parent().is(":disabled") )
    {    
        return false;
    }
});

【问题讨论】:

  • 它不适合我,我使用的是 firefox 14.1/mac。
  • 你试图解释什么,顺便说一句,它对我没有触发,我使用的是 firefox 14.1
  • 问题是:为什么 document.on 会触发但 button.click 不会。这是个好问题
  • 抱歉,使用的是最新版本的 Chrome。
  • 我刚刚在 FF 和 IE8/9 中测试过。一切正常。这似乎是 webkit 唯一的问题。

标签: jquery button webkit tags


【解决方案1】:

我认为这种行为是由您将事件应用到的元素造成的。在第一个示例中,您将事件绑定到文档。在第二个示例中,您将事件绑定到按钮。这纯粹是推测,因为我没有查看 jQuery 源代码来实际查看使用 $().on() 时执行了什么,但我认为选择器在事件触发后被解析。

例如,document 获取点击事件,解析选择器以测试它应该应用于哪个,然后执行该函数。第二种情况,在绑定点击事件之前先解析选择器。

【讨论】:

  • 它实际上只发生在 webkit 中 - 让我相信 webkit 而不是 JQuery 的问题。
【解决方案2】:

这一定是 JQuery 1.7.1 的一个错误。如果您迁移到 1.7.2 或 1.8,它就会消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多