jQuery:从另一个元素触发悬停事件

Posted

技术标签:

【中文标题】jQuery:从另一个元素触发悬停事件【英文标题】:jQuery: trigger a hover event from another element 【发布时间】:2012-10-30 19:15:55 【问题描述】:

当您将鼠标悬停在 <div> 上时,我希望页面的单独部分上的 <a> 也可以“悬停”在上面。

<div class="initiator">
</div>
<div>
   <a class="receiver href="#">Touch the div and I get hovered!</a>
</div>

我试过这个 jQuery,但它不会触发 &lt;a&gt; 的悬停 CSS。

$(".initiator").hover(function()
   $(".receiver").hover();
   console.log("div was hovered");
);

【问题讨论】:

doesn't trigger the &lt;a&gt;'s hover CSS. 可能是您的 css 中不够具体的问题 【参考方案1】:

试试这个:

$('.initiator').on('mouseenter mouseleave', function(e) 
    $('.receiver').trigger(e.type);
)

它将为接收者应用与发起者为 mouseenter 和 mouseleave 接收相同的触发器。请注意:

.hover(over, out) 

只是以下的高级变体:

.on('mouseenter', over).on('mouseleave', out)

因此在绑定和触发鼠标事件时,使用这些信息可以更加精确。

如评论中所述,您还可以使用:

$('.initiator').hover(function(e) 
    $('.receiver').trigger(e.type);
)

这里还有更多内容要阅读:http://api.jquery.com/hover/

【讨论】:

这是实现它的方法,假设我们正在讨论绑定处理程序,并假设所有.receiver 元素都应该被触发。在这里也可以使用 .hover(),但命名事件更好。 是的,.hover 也可以,但我也认为它的使用逻辑在仅使用一个参数时会令人困惑。 实际上 mouseenter 事件不会强制元素处于悬停状态,所以在我的情况下,这不会强制 css 规则 :hover 所以 css 不会受到影响,这就是我想要的去做。【参考方案2】:

你可以做这样的事情-:

$(".initiator").hover(function()
   $(".receiver").addClass('hover');
   console.log("div was hovered");
, function()
   $(".receiver").removeClass('hover');
);

现在您可以拥有一个包含 css 规则的类。

【讨论】:

.trigger('hover') 无效。【参考方案3】:

不确定“悬停”是什么意思,但假设您为 .receiver:hover 伪类定义了一些 CSS,我建议将它们移动到单独的 CSS 类 .hover 并使用 jQuery toggleClass 函数。

这是一个简单的示例,当您将鼠标移到 div 上时,链接文本会变为粗体 - http://jsfiddle.net/Pharaon/h29bh/

$(".initiator").hover(function()
  $(".receiver").toggleClass("hover");
  console.log("div was hovered");
);​

【讨论】:

$(".receiver").toggleClass("hover", event.type === 'mouseenter'); 会更安全一些。【参考方案4】:

hover() 是一个 jQuery 方法,将 mouseentermouseleave 事件联系在一起

试试

$(this).find('.receiver').mouseenter()

或者

 $(this).find('.receiver').trigger('mouseenter')

但是,将类添加到 a 标记并添加新的 css 规则可能会得到更好的结果。

 $(this).find('.receiver').toggleClass('hoverClass')

【讨论】:

您可以使用.trigger(event.type) 来对齐两种事件类型。

以上是关于jQuery:从另一个元素触发悬停事件的主要内容,如果未能解决你的问题,请参考以下文章

从另一个小部件触发检查按钮悬停事件

使用 jquery 悬停事件

从另一个 div 添加悬停触发器

jquery_api事件

jQuery Time 鼠标悬停在元素上(悬停)

浅析jQuery里面的.hover事件