2012-10-04 123 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所说,只有被标签包围的元素才会被选中,而不仅仅是文本。

相关问题