2012-07-22 93 views
1

我看不出为什么这是行不通的。我有一个列表,每个项目都有一个锚点上的背景图像。使用jQuery,我试图在选中的锚点之前删除项目上的背景图片。下面是HTML:jQuery - 选择以前的元素链接

<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的

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

当我使用下面,它的作品:

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

但是,只要我涉及锚标记,它停止。

TLDR:基本上我需要选择位于选定链接之前的“项目”,并删除其绑定的背景图像(链接,而不是列表项)。任何人都可以告诉我为什么代码不工作?

由于

回答

1

<a>链接$('li.selected a')没有一个元素。它仅仅是列表元素的一个子元素。您需要将DOM中的一个级别升至<li>,然后使用.prev

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

jsFiddle example

或者您的特定需求:

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

.prev(0).next()从之前和下一兄弟姐妹分别所选元素的,选择。为了您的目的,这将工作:

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