2012-10-04 127 views
1

我想在下面的代碼中檢索p裏面的font:first元素後面的所有html元素。jQuery Selector在某個HTML元素後檢索內容

<p class="rrp"> 
    <font color="#ff6600"> 
     <strong> 
      Save 20% on in-house Frames and Sunglasses 
      <br> 
      Save 10% on Contact Lens and Branded Frames 
      <br> 
      Ask at the counter for more details 
     </strong> 
    </font> 
    <br> 
    GKB Opticals, Shop No. EB-GF-10, Block East, Ground Floor, Town Centre - Amanora Mall, Amanora Park Township, Village Sadesatranali (17-1/2 Nali), Hadapsar, Taluka Haveli, 
    <br>Pune - 411 028. 
    <br> 
    <font color="#339900">Validity:</font> 
    31st March 2013 
</p>​ 

那麼,結果將是

<br> 
GKB Opticals, Shop No. EB-GF-10, Block East, Ground Floor, Town Centre - Amanora Mall, Amanora Park Township, Village Sadesatranali (17-1/2 Nali), Hadapsar, Taluka Haveli, 
<br>Pune - 411 028. 
<br> 
<font color="#339900">Validity:</font> 
31st March 2013 

我應該給你一些代碼,我已經做了,但我不知道如何獲取某些元素之後的元素。

有人能指導我嗎? 謝謝!

+0

您所展示的不僅僅是元素,還有文本節點。你想怎麼做? –

回答

2

您可以使用nextAll方法來選擇元素的所有後續同胞。

$('.rrp font:first').nextAll() 

如果要排除第一個字體元素,可以使用filter方法。

var $ff = $('.rrp font:first') 
$('.rrp').contents().filter(function(){ 
    return !$(this).is($ff) 
}) 

http://jsfiddle.net/c7VSY/

+0

它只選擇nextAll'font'元素。我需要選擇某個元素之後的所有元素。 – rnk

+1

你是什麼意思的所有元素,textnodes不是真正的元素。 – adeneo

0

由於幾乎所有的CSS選擇器是由jQuery的支持,你可能只使用後兄弟選擇,~,其次是所有的選擇,*

$('.rrp font:first ~ *') 
0

您可以使用$('.rrp font:first').nextAll() 但將返回所有<br><font color="#339900">Validity:</font>而已,至於其他內容將不會選擇,因爲它們的<p> 一部分,你應該將所有文本元素

修改後的HTML裏面:

<p class="rrp"> 
     <font color="#ff6600"> 
      <strong> 
       Save 20% on in-house Frames and Sunglasses 
       <br> 
       Save 10% on Contact Lens and Branded Frames 
       <br> 
       Ask at the counter for more details 
      </strong> 
     </font> 
     <br> 
     <div>GKB Opticals, Shop No. EB-GF-10, Block East, Ground Floor, Town Centre - Amanora Mall, Amanora Park Township, Village Sadesatranali (17-1/2 Nali), Hadapsar, Taluka Haveli, 
     <br>Pune - 411 028. 
     <br> 
</div> 
     <font color="#339900">Validity:</font> 
     <div>31st March 2013</div> 
    </p>​ 
0

如果你想要做的是讓你的.rrp內容的副本,而不第一字體ELE換貨和之前的一切,你可以這樣做:

var $rrp = $('.rrp').clone(); 
$rrp.find(':lt('+($rrp.find('font:first').index()+1)+')').remove(); 
var $rrpContent = $rrp.html(); 

$rrp在這種情況下還包含了文本節點。

但是你需要的代碼真的取決於你的用例。那是爲了清潔嗎?

0

您可以使用:$('.rrp font:first').nextAll()。但正如@Shsul所說,只有被標籤包圍的元素纔會被選中,而不僅僅是文本。

相關問題