jquery子元素问题
我有一个列表,每个列表元素都有一个textarea和一个img。当我将鼠标悬停在列表的某个文本区域上时,我希望相应的img更改src 问题是,当我将鼠标悬停在其中一个列表的文本区域上时,列表上的所有img都会改变,而不仅仅是该列表项上的imgjquery子元素问题,jquery,Jquery,我有一个列表,每个列表元素都有一个textarea和一个img。当我将鼠标悬停在列表的某个文本区域上时,我希望相应的img更改src 问题是,当我将鼠标悬停在其中一个列表的文本区域上时,列表上的所有img都会改变,而不仅仅是该列表项上的img $('.rightMainP').hover(function() { $('#rightMain').find('img:first-child').attr('src', '../Images/whiteSidewaysNub.png'); }
$('.rightMainP').hover(function() {
$('#rightMain').find('img:first-child').attr('src', '../Images/whiteSidewaysNub.png');
}, function() {
$('#rightMain').find('img:first-child').attr('src', '../Images/graySidewaysNub.png');
});
在我的代码中,每个列表项中都有多个IMG,而我的jquery不能指定仅更改列表项中的一个IMG,该IMG具有悬停在其上的文本区域。您需要选择与悬停在其上的
位于同一列表元素中的
。这应该做到:
每当触发悬停事件时,都会对所有图像执行属性更改,这些图像是悬停文本区域作为其后代的同一列表元素的后代。这应该只是一个图像
如果文本区域和图像实际上是同一元素的子元素(即,它们是兄弟元素),那么您也可以使用
$('.rightMainP').hover(function() {
$(this).closest('li').find('img').attr('src', '../Images/whiteSidewaysNub.png');
}, function() {
$(this).closest('li').find('img').attr('src', '../Images/graySidewaysNub.png');
});
正如Jon提到的,我建议:
$('.rightMainP').hover(function() {
$(this).siblings('img').attr('src', '../Images/whiteSidewaysNub.png');
}, function() {
$(this).siblings('img').attr('src', '../Images/graySidewaysNub.png');
});
此外,如果同一li
中还有其他图像您不想更改,请添加.first()使其:
$(this).siblings('img').attr('src', '../Images/blablabla');
$(this).siblings('img').first().attr('src', '../Images/blablabla');