【问题标题】:jquery trigger hover on another element with same selector attributesjquery 触发器悬停在具有相同选择器属性的另一个元素上
【发布时间】:2013-03-11 10:52:33
【问题描述】:

听起来很简单,并且有一个涉及更改 CSS 类的解决方案,但我想知道是否有一个优雅的即时解决方案来解决以下问题。

这是a similar question,但它为我的场景创建了“太多递归”。

所以我有 2 个按钮都可以转到下一个选项卡;一个在内容的顶部,一个在下面。当我将鼠标悬停在其中任何一个上时,我希望它们都显示悬停状态。它们具有相同的 html 代码;

<a href="#" class="button step-next" onclick="showStep(3); return false;">Next &raquo;</a>

在另一篇文章之后,我尝试了解决方案;

$('a.step-next').on('mousenter mouseleave', function(e) {
    $('a.step-next').not(this).trigger(e.type);
});

但是我最初使用 not() 的逻辑是错误的;它只会在两个元素之间来回触发事件。

显然,我可以更改 CSS 以添加一个新类并在悬停/非悬停时将其删除,这就是我要走的路线。但是有没有只触发的解决方案?

【问题讨论】:

  • 有什么理由不能只使用 :hover 伪类吗?如果我没有遗漏任何东西,似乎要简单得多。
  • 是的,CSS 是最好的选择。 a.button:hover{背景:#ffff00;}

标签: javascript jquery hover selector bind


【解决方案1】:

如果我理解正确,您不希望代码生成的事件重新触发代码..

如果是这样,你可以使用.trigger()extraParameters方法

$('a.step-next').on('mousenter mouseleave', function(e, fromCode) {
    if (fromCode === undefined){
        $('a.step-next').not(this).trigger(e.type, true);
    }
});

【讨论】:

  • 虽然这不能解决我需要使用 CSS 类来保持悬停样式,但请参阅 link here - 这确实解决了防止我的代码生成无限循环的具体问题,所以我对答案很满意。
【解决方案2】:

不确定您想要实现什么(html required),但这可能是您正在寻找的解决方案:

$('a.step-next').on('mousenter mouseleave', function(e) {
  $(this).siblings('a.step-next').trigger(e.type);
});

【讨论】:

  • 在这种情况下,这两个元素不在同一个父级中,否则这可能是一个解决方案。感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 2022-06-15
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
相关资源
最近更新 更多