2012-12-16 114 views
2

我試圖選擇相鄰的<p>之間的所有內容,每次更改「p」的數量。而在p標籤對之間的內容對任何事情都沒有任何意義。有些事情是這樣的:jquery next()什麼都不返回

<p><a href="x">...ABC...</a></p> 

    <<<<<<<< Beginning of what I want >>>>>>>> 

    <fieldset>...</fieldset> 
    <font title="...">...</font> 
    sometext without any tag<br> 
    <a href="...">...</a> 
    //[0..N] more tags 

    <<<<<<<< End of what I want >>>>>>>> 

    <p><a href="x+1">...ABC...</a></p> 
    [0..N] more "p"'s with similar pattern ("p" with random url in "a") 

更新:

我想那些流氓代碼(無標記的文字)包裝成一些DIV,這樣我可以以後再處理它們。就像這樣:

<div id="outer"> 
    <div id="1"> 
     <p><a href="x">...ABC...</a></p> 

    <! Beginning of what I want > 

     <fieldset>...</fieldset> 
     <font title="...">...</font> 
     sometext without any tag<br> 
     <a href="...">...</a> 
     //[0..N] more tags 

    <! End of what I want > 
    </div> 
    <div id="2"> 
     <p><a href="x+1">...ABC...</a></p> 
    </div> 
    <div id="3"> 
     //something or nothing 
    </div> 
    //something or nothing 
</div> 

爲了做到這一點,我有這個代碼,因爲那裏是一個沒有任何標籤的一些文本圍繞它:

var ps = $("p:contains('ABC')"); 
    ps.each(function(){ 
     if(!($(this).next()[0])){ 
      return true; 
     } 
     var me = $(this); 
     var pa = me.parent().contents(); 
     var nx = me.next("p:contains('ABC')"); //returns [] in this case 
     var i0 = pa.index(me); 
     var i1 = pa.index(nx); 
     if (i1 > i0) { 
      var elements = pa.slice(i0, i1); 
      elements.each(function(){ 
       //Do something 
      }); 
     } 
    }); 

標示在代碼中,next()函數即使我將其更改爲下一個(「p」)也不會返回任何內容。但是如果我使用me.next()。next()。next()。next()。next()我可以選擇下一個「p」標籤。爲什麼會發生?我怎麼能做得更好?

+0

你問的是'

...

'或'

...

IWANTTHIS

...

' – bobthyasian

+0

後者。第一個太簡單了,只需$(「p」)。innerHTML ... – ericcire

+0

如果沒有類或ID,很難做到。 – bobthyasian

回答

2

您應該使用.nextUntil("p")達到此目的!因爲.next()只檢查下一個元素,而nextUntil()搜索直到找到關聯的元素!

+0

Nah .. .nextUntil(「p」)是我的第一次嘗試,我返回一個列表,但它不包含未標記的文本,這實際上非常重要。我不知道爲什麼服務器端沒有把它放在任何標籤中。 – ericcire

+0

你能簡單地用簡單的英語解釋你實際上想要什麼嗎? :)那麼我將很容易幫助你! –

+0

我等你只有男人:) –

1

看完你的問題後我得到的是你想要的內容從<p>標籤...無論是內容還是html標籤。如果我錯了,請讓我知道...

我已經創建了一個演示小提琴請看看。 http://jsfiddle.net/dineshswami/YpYWY/1/

更新小提琴:http://jsfiddle.net/dineshswami/YpYWY/3/

HTML:

<p><a href="x">...ABC...</a></p> 


<fieldset>...</fieldset> 
<font title="...">...</font> 
sometext without any tag<br> 
<a href="...">...</a> 
//[0..N] more tags 

<p><a href="x+1">...ABC...</a></p> 

的Jquery:

$("p").contents().unwrap();  

輸出:

<a href="x">...ABC...</a> 


    <fieldset>...</fieldset> 
    <font title="...">...</font> 
    sometext without any tag<br> 
    <a href="...">...</a> 
    //[0..N] more tags 

    <a href="x+1">...ABC...</a> 
+0

嗯,不...我想要的是東西在此

和接下來的

之間,在這種情況下,
,,未標記的文本,
,等等,都是這些。什麼在

標籤將始終是'ABC'。 –
ericcire

+0

@ericcire親愛的你可以請指出清楚你到底想要什麼。在我的代碼裏有什麼

標籤它會放在yh #ph容器裏。 – w3uiguru

+0

的一切「外部」但仍在文檔中。對不起,我英文很差。 – ericcire