首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何触发与当前按钮相关联的远程元素?

如何触发与当前按钮相关联的远程元素?
EN

Stack Overflow用户
提问于 2012-04-09 14:38:55
回答 4查看 204关注 0票数 0

如何触发与当前按钮相关联的远程元素?

例如,

HTML

代码语言:javascript
复制
<ul class="menu-1">
    <li><a href="#">button 1</a></li>
    <li><a href="#">button 2</a></li>
    <li><a href="#">button 2</a></li>
</ul>

<ul class="menu-2">
    <li><a href="#">button 1</a></li>
    <li><a href="#">button 2</a></li>
    <li><a href="#">button 2</a></li>
</ul>

因此,当我将按钮1悬停在menu-1中时,menu-2中的按钮1也应该被悬停。

因此,当我将按钮1悬停在menu-2中时,menu-1中的按钮1也应该被悬停。

我的工作jquery

代码语言:javascript
复制
$(".menu-1 li").hover(function () {

        var text = $(this).text();

        if ($('.menu-2 li a:contains("'+text+'")').length > 0) {
            $('.menu-2 li a:contains("'+text+'")').trigger("mouseenter");
        }
    });

小提琴手

http://jsfiddle.net/JDG7U/

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-09 15:08:51

我使用的方法是用一个:hover类替换您的.hover,并为该类分配CSS更改。然后,我向每个data-添加了一个li属性,并对其进行了筛选。(使用类会导致问题,因为如果不选择hover类,就无法读取任意的类属性。)

有点复杂,但它留下了一些非常简短和简单的代码,如果需要的话,它允许对元素进行重新排序。

HTML:

代码语言:javascript
复制
<ul class="menu-1">
    <li data-num="1"><a href="#">button 1</a></li>
    <li data-num="2"><a href="#">button 2</a></li>
    <li data-num="3"><a href="#">button 3</a></li>
</ul>

<ul class="menu-2">
    <li data-num="2"><a href="#">button 2</a></li>
    <li data-num="3"><a href="#">button 3</a></li>
    <li data-num="1"><a href="#">button 1</a></li>
</ul>​

联署材料:

代码语言:javascript
复制
$('ul li').hover(function() {
    var num = $(this).data('num');
    $('li').filter(function() {
        return $(this).data('num') === num;
    }).toggleClass('hover');
});​

CSS:

代码语言:javascript
复制
ul li.hover a {
    color: green;
}​

http://jsfiddle.net/he7Uk/2/

票数 2
EN

Stack Overflow用户

发布于 2012-04-09 15:08:41

据我所知,您不能以这种方式真正触发诸如:悬停这样的伪类,但是可以在JS中的mouseenter/mouseleave事件中使用类或设置样式,或者直接更改CSS,比如:

代码语言:javascript
复制
$(".menu-1 li").on({
    mouseenter: function () {
       var index = $(this).index();
       $('.menu-2 li a').eq(index).css('color', 'green');
    },
    mouseleave: function() {
       var index = $(this).index();
       $('.menu-2 li a').eq(index).css('color', 'black');
    }
});​

小提琴

或者在课堂上,用两种方式工作:

代码语言:javascript
复制
$(".menu-1 li, .menu-2 li").on({
    mouseenter: function () {
        var index = $(this).index(),
            elems = $('.menu-1 li a:eq('+index+'), .menu-2 li a:eq('+index+')');
        $(elems).addClass('hover');
    },
    mouseleave: function () {
        var index = $(this).index(),
            elems = $('.menu-1 li a:eq('+index+'), .menu-2 li a:eq('+index+')');
        $(elems).removeClass('hover');
    }
});​

小提琴

票数 1
EN

Stack Overflow用户

发布于 2012-04-09 15:10:25

还有一个使用:nth-child的变体

代码语言:javascript
复制
$lis = $('.menu li');
$lis.hover(function() {
    var index = $(this).index() + 1;
    $lis.filter(':nth-child(' + index + ')').addClass('hovered');
}, function() {
    $lis.removeClass('hovered');
});​

演示:http://jsfiddle.net/JDG7U/5/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10074856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档