2010-02-09 69 views
2

另一個元素我有一個網頁,基本上是這樣的:文本換行和元素使用jQuery

<div id="foo"> 
    <a>One</a>, <a>Two</a>, <a>Three</a>, <a>Four</a> 
</div> 

爲簡潔起見移除了額外的屬性。

div內可能有任何數量的鏈接。我想要做的就是隱藏所有鏈接,然後添加一個「顯示其餘」鏈接。基本上,爲實現這一目標(據我可以看到)發生,我需要能夠改造它看起來像這樣:

<div id="foo"> 
    <a>One</a>, <a>Two</a>, <a>More...</a> 
    <span style="display: none"><a>Three</a>, <a>Four</a></span> 
</div> 

你將如何包裝在另一個元素的鏈接?

請注意,顯而易見的方法($('#foo a:gt(1)').wrapAll('<span>'))在此處不起作用,因爲每個鏈接之間都有文本節點(逗號),並且這些文本節點不會被該查詢選中。

回答

3

試試這個的基礎上,因爲每一個文本節點算作一個現在的福祉2n調整指數:

$(function() { 
    var n = 4; 
    $('#foo').contents() 
    .filter(function(index){ 
     return index > n && ((this.nodeType==3)||(this.nodeName=="A"))}) 
    .wrapAll('<span style="background: red;">'); 
}); 
+0

爲什麼這種做法? nickf只是想在索引後隱藏所有'a'元素。 – user113716 2010-02-09 02:08:09

+0

@patrick:沒錯,包括'''文本節點。 – 2010-02-09 02:12:48

+0

@patrick - 再次看看標記......隱藏所有''元素會留下很多逗號:) – 2010-02-09 02:13:08