1

我想在下面的代码中检索font:first元素内部之后的所有 html 元素。p

<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

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

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

4

5 回答 5

2

您可以使用nextAll选择元素的所有以下同级的方法。

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

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

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

http://jsfiddle.net/c7VSY/

于 2012-10-04T10:56:50.823 回答
0

由于 jQuery 支持几乎所有 css 选择器,因此您可能只使用后兄弟选择器~, 后跟所有选择器*.

$('.rrp font:first ~ *')
于 2012-10-04T10:59:27.483 回答
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>​
于 2012-10-04T11:12:16.867 回答
0

如果您想做的是在.rrp没有第一个字体元素和之前的所有内容的情况下获取内容的副本,您可以这样做:

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

$rrp在这种情况下,还包含文本节点。

但是您需要的代码实际上取决于您的用例。是用来打扫的吗?

于 2012-10-04T11:14:31.923 回答
0

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

于 2012-10-04T11:32:07.240 回答