我有以下标记:
<div id="breadcrumbs">
<ul>
<li><span class="crumblink"><a href="/">Home</a></span></li>
<span class="arrows"> »</span>
<li><span class="crumblink"><a href="/locations-brands">Publishing Regions</a></span></li>
<span class="arrows"> »</span>
<li><span class="crumblink"><a href="/locations-brands/publications">Locations & Brands</a></span></li>
<span class="arrows"> »</span>
<li><span class="crumblink"><a href="/locations-brands/publications/popupbrand">Publications</a></span></li>
<span class="arrows"> »</span>
</ul>
</div>
如何删除<li>
if if string“Publications”及其下一个span.arrows
?
答案 0 :(得分:5)
有几种方法可以做到这一点,但有一种方法是使用$()
和一个选择器来查找li
,然后循环遍历它们(each()
对于它来说很方便)使用text()
获取文字,String#indexOf
检查内容,next()
查看下一个是否是相关范围(但请参见下面的注释),当然{{3}移除元素。
选择li
时,可以使用特殊的remove()
jQuery添加,但请注意,如果这样做,则意味着jQuery无法使用浏览器构建的-in用于查找元素的工具,因此可能会对性能产生影响。
请注意,您的HTML无效。 :contains("text")
selector 不能拥有span
元素作为孩子; ul
元素中唯一有效的直接子元素为ul
elements(如果您愿意,可以在其中包含spans
个元素。当您发送类似浏览器的无效标记时,浏览器会执行的操作。
答案 1 :(得分:2)
试试这个:
$('#breadcrumbs li:contains("Publications")')
/* find li node containing Publications */
.next('span').remove().end()
/* search next span and remove it */
.remove();
/* end() reset last selection (made with next()), so last remove() is removing the li */