jQuery Selector在某些HTML元素之后检索内容

时间:2012-10-04 10:54:25

标签: javascript jquery html css jquery-selectors

我想检索以下代码中font:first内的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>
    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

我应该给你一些我已经完成的代码,但我不知道如何在某个元素之后获取元素。

有人可以指导我吗? 谢谢!

5 个答案:

答案 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/

答案 1 :(得分:0)

由于jQuery几乎支持所有css选择器,因此您可以使用后兄弟选择器~,然后使用all选择器*

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

答案 2 :(得分: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>​

答案 3 :(得分:0)

如果您要做的是获取.rrp内容的副本而没有第一个字体元素以及之前的所有内容,您可以这样做:

var $rrp = $('.rrp').clone();
$rrp.find(':lt('+($rrp.find('font:first').index()+1)+')').remove();
var $rrpContent = $rrp.html();
在这种情况下,

$rrp也包含文本节点。

但您需要的代码实际上取决于您的用例。这是清洁吗?

答案 4 :(得分:0)

您可以使用:$('.rrp font:first').nextAll()。但正如@Shsul所说,只有用标签包围的元素才会被选中,而不仅仅是文本。