如何触发与当前按钮相关联的远程元素?
例如,
HTML
<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
$(".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/
发布于 2012-04-09 15:08:51
我使用的方法是用一个:hover类替换您的.hover,并为该类分配CSS更改。然后,我向每个data-添加了一个li属性,并对其进行了筛选。(使用类会导致问题,因为如果不选择hover类,就无法读取任意的类属性。)
有点复杂,但它留下了一些非常简短和简单的代码,如果需要的话,它允许对元素进行重新排序。
HTML:
<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>联署材料:
$('ul li').hover(function() {
var num = $(this).data('num');
$('li').filter(function() {
return $(this).data('num') === num;
}).toggleClass('hover');
});CSS:
ul li.hover a {
color: green;
}http://jsfiddle.net/he7Uk/2/
发布于 2012-04-09 15:08:41
据我所知,您不能以这种方式真正触发诸如:悬停这样的伪类,但是可以在JS中的mouseenter/mouseleave事件中使用类或设置样式,或者直接更改CSS,比如:
$(".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');
}
});小提琴
或者在课堂上,用两种方式工作:
$(".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');
}
});小提琴
发布于 2012-04-09 15:10:25
还有一个使用:nth-child的变体
$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/
https://stackoverflow.com/questions/10074856
复制相似问题