javascript jquery next()不返回任何内容

7dl7o3gd  于 2023-05-21  发布在  Java
关注(0)|答案(2)|浏览(122)

我试图选择相邻的<p>之间的所有内容,“p”的数量每次都会改变。并且p个标签对之间的内容可以是无到无。像这样的东西:

<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")

更新:
我想将这些恶意代码(未标记的文本) Package 到一些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()函数不会返回任何内容,即使我将其更改为next(“p”)。但是如果我使用me.next(). next(). next(). next(),我可以选择下一个“p”标记。为什么会这样?我怎么能做得更好呢?

wz1wpwve

wz1wpwve1#

您应该使用.nextUntil("p")来实现此目的!因为.next()只检查下一个元素,而nextUntil()搜索直到找到关联的元素!

7lrncoxx

7lrncoxx2#

阅读你的问题后,我得到的是你想要的内容从<p>标签...无论是内容还是HTML标签。如果我错了请让我知道…
我已经创建了一个演示小提琴,请看看。http://jsfiddle.net/dineshswami/YpYWY/1/

更新Fiddle: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>

相关问题