我试图选择相邻<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")
更新
我想将这些流氓代码(未标记的文本)包装到某个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(“p”),next()函数也不会返回任何内容。但是如果我使用me.next()。next()。next()。next()。next()我可以选择下一个“p”标签。为什么会这样?我怎么能做得更好?
答案 0 :(得分:2)
您应该为此目的使用.nextUntil("p")
!因为.next()只检查下一个元素,nextUntil()搜索直到找到关联的元素!
答案 1 :(得分:1)
在阅读了您的问题后,我得到的是<p>
标签内容...无论是内容还是HTML标签。如果我错了请告诉我......
我已经创建了一个演示小提琴,请看一下。 http://jsfiddle.net/dineshswami/YpYWY/1/
更新小提琴: 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>