Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery子元素问题_Jquery - Fatal编程技术网

jquery子元素问题

jquery子元素问题,jquery,Jquery,我有一个列表,每个列表元素都有一个textarea和一个img。当我将鼠标悬停在列表的某个文本区域上时,我希望相应的img更改src 问题是,当我将鼠标悬停在其中一个列表的文本区域上时,列表上的所有img都会改变,而不仅仅是该列表项上的img $('.rightMainP').hover(function() { $('#rightMain').find('img:first-child').attr('src', '../Images/whiteSidewaysNub.png'); }

我有一个列表,每个列表元素都有一个textarea和一个img。当我将鼠标悬停在列表的某个文本区域上时,我希望相应的img更改src

问题是,当我将鼠标悬停在其中一个列表的文本区域上时,列表上的所有img都会改变,而不仅仅是该列表项上的img

$('.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');