【发布时间】:2015-09-20 12:44:44
【问题描述】:
我正在使用 Zurb Foundation 工具提示 (http://foundation.zurb.com/docs/components/tooltips.html)。我想稍微定制他们的行为。他们利用源元素上的mouseover 事件侦听器来创建工具提示(在第一次调用时),然后将其淡入。我正在尝试做的是让 jQuery 选择工具提示源的子集页面,只删除他们的鼠标悬停侦听器,并绑定新的侦听器,让工具提示在鼠标移开后消失之前停留一秒钟。
这是棘手的部分。 Zurb 像这样绑定它的监听器:
$('body.off-canvas').on('mouseenter', '.has-tooltip', ...);
以下将按预期成功删除此侦听器:
$('body.off-canvas').off('mouseenter', '.has-tooltip');
但我只想删除其中一些元素的侦听器,如下所示:
$('body.off-canvas').off('mouseenter', '.has-tooltip.my-custom-class');
事实证明,jQuery 不会将其识别为更大的.has-tooltip 元素集的“减法”,而是本质上说,“没有事件侦听器匹配这个精确的选择器,因此我什么也不做。”有没有人有一个好的解决方法?如果您自己创建原始侦听器,我发现有些方法会起作用,但这里不是这样。
【问题讨论】:
-
有点从不同的角度来解决这个问题,但也许考虑使用
.filter()方法或:not()选择器在应用.on()之前过滤掉.my-custom-class? -
感谢您的意见;如果我自己创建原始侦听器,这将起作用,但不幸的是它是第三方库的一部分。我想我可以修改库,但我不想这样做,因为那不是很好的做法。
-
所以库不能让你在配置中指定它?真可惜
标签: javascript html jquery dom jquery-events