如果文本与jQuery中的字符串匹配,则删除元素

时间:2012-04-26 10:20:16

标签: javascript jquery

我有以下标记:

<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 &amp; 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

2 个答案:

答案 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 */

示例小提琴:http://jsfiddle.net/MZysf/