jQuery - 选择以前的元素链接

时间:2012-07-22 02:54:17

标签: jquery css jquery-selectors

我不明白为什么这不起作用。我有一个列表,每个项目在锚点上都有一个背景图像。使用jQuery我试图在选定的锚之前删除项目上的背景图像。这是HTML:

<ul id="menu">
<li class="last"><a href="#">Contact Us</a></li>
<li><a href="#">Testimonials</a></li>
<li><a href="#">Projects</a></li>
<li class="selected"><a href="#">Our Services</a></li>
<li><a href="#">About Us</a></li>
<li><a href="#">Home</a></li>
</ul>

这是我用来尝试删除背景图片的jQuery(使用display:none进行测试):

$('li.selected a').prev().css( {display : "none"});

当我使用以下内容时,它可以工作:

$('li.selected').prev().css( {display : "none"});

但是一旦我涉及锚标签,它就会停止。

TLDR:基本上我需要选择所选链接之前的“项目”,并删除与其关联的背景图像(链接,而不是列表项)。谁能告诉我为什么代码不起作用?

由于

2 个答案:

答案 0 :(得分:1)

.prev(0).next()分别从所选元素的上一个和下一个 siblings 中进行选择。为了您的目的,这将有效:

$('li.selected').prev().find("a").css( {display : "none"});

答案 1 :(得分:1)

<a>中的$('li.selected a')链接没有上一个元素。它独自作为list元素的子元素。您需要将DOM中的一个级别上升到<li>,然后使用.prev

$('li.selected a').parent().prev().css( {display : "none"});​

<强> jsFiddle example

或者根据您的具体需要:

$('li.selected a').parent().prev().children('a').css( {backgroundImage : "none"});​​​​​​​​​​​​​​​