1

次のマークアップがあります。

<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>文字列「Publications」とその次の場合を削除するにはどうすればよいspan.arrowsですか?

4

2 に答える 2

5

これを行うにはいくつかの方法がありますが$()、セレクターを使用してlis を検索し、それらをループして (これeach()には便利です) を使用text()してテキストを取得し、String#indexOf内容を確認しnext()、次のことがあるかどうかを確認する方法があります。関連するスパン (ただし、以下の注を参照) であり、もちろんremove()要素を削除します。

lis を選択する場合、jQuery が追加する特別なセレクターを使用できますが、そうすると、jQuery はブラウザーの組み込みツールを使用して要素を見つけることができないため、パフォーマンスに影響を与える可能性があることに注意してください。:contains("text")


HTML が無効であることに注意してください。ul要素 は要素を子として持つことはできません。span要素の唯一の有効な直接の子はul要素です(必要に応じて要素内に含めることができliますspans)。そのような無効なマークアップを送信したときにブラウザーが行うことは、ブラウザーに依存します。

于 2012-04-26T10:22:34.470 に答える
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/

于 2012-04-26T10:22:43.700 に答える