【问题标题】:jQuery .on() hover not working for HTML5 select boxjQuery .on() 悬停不适用于 HTML5 选择框
【发布时间】:2016-04-20 00:16:41
【问题描述】:

我试图在鼠标悬停在选择框上时捕获事件,无论是折叠还是展开。我以以下方式使用 .on(),

$(document).on('hover', "select#selectBox", function() {
    alert("done");
  });

请注意,我也在准备好在 DOM 文档中使用这个 sn-p。

我也尝试将事件更改为单击、滚动、鼠标悬停、鼠标输入等。 似乎也不适用于那些。

请指出我哪里错了。

我制作了一个 JSFiddle:https://jsfiddle.net/g9vf1mty/2/

编辑:感谢大家的快速回复! 我已经纠正了我的错误:)

我稍微调整了 JSFiddle。现在,我正在尝试滚动尺寸小于选项数量的选择框,并将“悬停”事件更改为“滚动”事件。它似乎不是那样工作的。

我正在使用 jQuery 2.1.3

这里的JSFiddle:https://jsfiddle.net/g9vf1mty/8/

【问题讨论】:

  • 使用mouseoverDemo
  • 你的小提琴在你包含 jQuery 时可以工作......
  • 上面写着$ is not defined,它只是意味着jquery没有正确加载,如果你包含它一切正常。
  • 请看最新小提琴jsfiddle.net/g9vf1mty/8

标签: javascript jquery html


【解决方案1】:

您不需要将绑定到document 级别的事件包装在就绪伪事件中。而且因为你想委托事件,也许是为了处理动态元素,正确的方法是这样绑定mouseenter & mouseleave 事件:

最终在处理程序内按事件类型过滤(输入/输出)

$(document).on('mouseenter mouseleave', "#selectBox", function(e) {
  alert("done: " + e.type);
});

【讨论】:

【解决方案2】:
$("select#selectBox").hover(function() {
 alert("working");
});

使用悬停功能,以上述方式。更重要的是,你也错过了 jQuery 库。

由于on("hover")从 jQuery 1.8 中弃用,因此它不适用于更高版本的 jquery。

【讨论】:

  • 这不是 100% 正确的,因为 hover() 事件在 v1.8.3 中有效,它在 v1.9 或更高版本中已被弃用。可以在官方文档中查看:jquery.com/upgrade-guide/1.9
  • @fbid,在这里阅读真实来源api.jquery.com/on/#additional-notes,上面写着在 jQuery 1.8 中已弃用,在 1.9 中删除,我使用了弃用这个词.. :)
  • 但你不是在这里委派活动
  • 是的,它已从 v.1.8 中弃用,但您写道它不适用于高于 1.8 的版本,这不是 100% 正确的,无论如何这只是为了澄清
  • 是的.. 那么谢谢你的信息。 :)
【解决方案3】:

你应该使用 mouseenter 事件

并在你的小提琴中包含 jquery :)

看看这个(SO question)[Is it possible to use jQuery .on and hover?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    相关资源
    最近更新 更多