Jquery 如何触发与当前按钮关联的远程元素?
如何触发与当前按钮关联的远程元素 比如说, HTML 西德尔Jquery 如何触发与当前按钮关联的远程元素?,jquery,hover,mouseevent,contains,Jquery,Hover,Mouseevent,Contains,如何触发与当前按钮关联的远程元素 比如说, HTML 西德尔 给他们两个相同的.class给他们两个相同的.class据我所知,你不能真的触发伪类,比如:以那种方式悬停,但你可以使用一个类或在JS中的mouseenter/mouseleave事件中设置样式,或者直接更改CSS,比如: $(".menu-1 li").on({ mouseenter: function () { var index = $(this).index(); $('.menu-2 li
给他们两个相同的
.class
给他们两个相同的.class
据我所知,你不能真的触发伪类,比如:以那种方式悬停,但你可以使用一个类或在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');
}
});
据我所知,您无法以这种方式触发伪类,如:hover,但您可以使用类或在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');
}
});
我使用的方法是用
.hover
类替换:hover
,并将CSS更改分配给该类。然后我为每个li
添加了data-
属性,并对其进行了过滤。(使用类会导致问题,因为如果不选择悬停
类,我无法读取任意类属性。)
有点复杂,但它留下了一些非常简短的代码,如果需要的话,它允许对元素进行重新排序
HTML:
CSS:
我使用的方法是用
.hover
类替换:hover
,并将CSS更改分配给该类。然后我为每个li
添加了data-
属性,并对其进行了过滤。(使用类会导致问题,因为如果不选择悬停
类,我无法读取任意类属性。)
有点复杂,但它留下了一些非常简短的代码,如果需要的话,它允许对元素进行重新排序
HTML:
CSS:
和另一个使用
:n子项的变体:
$lis = $('.menu li');
$lis.hover(function() {
var index = $(this).index() + 1;
$lis.filter(':nth-child(' + index + ')').addClass('hovered');
}, function() {
$lis.removeClass('hovered');
});
演示:和另一个使用:n子项的变体:
$lis = $('.menu li');
$lis.hover(function() {
var index = $(this).index() + 1;
$lis.filter(':nth-child(' + index + ')').addClass('hovered');
}, function() {
$lis.removeClass('hovered');
});
演示:是否无法使用id
、class
或data-x
属性来标识元素之间的关系?通过文本内容进行匹配是相当缓慢和丑陋的。另外,如果菜单1中有按钮1
,菜单2中有按钮11
,会发生什么情况。当使用:contains
是时,它们将匹配。不必按文本匹配,欢迎提供更好的建议/解决方案。谢谢。您是否无法使用id
、class
或data-x
属性来标识元素之间的关系?通过文本内容进行匹配是相当缓慢和丑陋的。另外,如果菜单1中有按钮1
,菜单2中有按钮11
,会发生什么情况。当使用:contains
是时,它们将匹配。不必按文本匹配,欢迎提供更好的建议/解决方案。谢谢。请用具体的代码示例进行解释。我怀疑它不会像你想象的那么容易工作。请用一个具体的代码示例来解释。我怀疑它不会像你想象的那么容易工作。回答得好,但我不喜欢假设每个列表中的元素总是以相同的顺序排列。@mblase75-是的,它们必须以正确的顺序排列,否则需要某种标识符,例如数据属性等,或者使用内容来识别它们。最后一个不是很有效率的方法仍然有效。在不更改HTML标记和不使用内容的情况下,我唯一能想到的方法是使用索引。回答得好,但我不喜欢假设每个列表中的元素总是以相同的顺序彼此排列。@mblase75-是的,它们必须以正确的顺序排列,否则需要某种标识符,例如数据属性等,或者使用内容来识别它们。最后一个不是很有效率的方法仍然有效。在不改变HTML标记和不使用内容的情况下,我唯一能想到的方法就是使用索引。谢谢你的回答,mblase。我喜欢它的简单!但是我想知道,通过向li元素添加data num=“x”
,这是否是一个有效的html?@lauthiamkok是的,这是一个有效的HTML5属性,甚至HTML4也允许向标记添加新属性(如果无法识别,将忽略这些属性)。jQuery自动导入所有数据-
属性,以便与.data()
方法一起使用,这使得它可以方便地将任意数据存储在DOM元素本身中。这是一个有效的HTML5属性,即使HTML4也允许向标记添加新属性(如果无法识别这些属性,将忽略这些属性)
很高兴知道这一点!非常感谢!谢谢你的回答。我喜欢它的简单!但是我想知道,通过向li元素添加data num=“x”
,这是否是一个有效的html?@lauthiamkok是的,这是一个有效的HTML5属性,甚至HTML4也允许向标记添加新属性(如果无法识别,将忽略这些属性)。jQuery自动导入所有数据-
属性,以便与.data()
方法一起使用,这使得它可以方便地将任意数据存储在DOM元素本身中。这是一个有效的HTML5属性,即使HTML4也允许向标记添加新属性(如果无法识别这些属性,将忽略这些属性)
很高兴知道这一点!非常感谢!
ul li.hover a {
color: green;
}
$lis = $('.menu li');
$lis.hover(function() {
var index = $(this).index() + 1;
$lis.filter(':nth-child(' + index + ')').addClass('hovered');
}, function() {
$lis.removeClass('hovered');
});