我不明白为什么这不起作用。我有一个列表,每个项目在锚点上都有一个背景图像。使用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:基本上我需要选择所选链接之前的“项目”,并删除与其关联的背景图像(链接,而不是列表项)。谁能告诉我为什么代码不起作用?
由于
答案 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"});