【发布时间】:2012-12-03 16:50:18
【问题描述】:
我试图选择相邻<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() 函数更改为 next("p"),它也不会返回任何内容。但是如果我使用 me.next().next().next().next().next() 我可以选择下一个“p”标签。为什么会发生这种情况?我怎样才能做得更好?
【问题讨论】:
-
你要的是
<p>...</p>或<p>...</p>IWANTTHIS<p>...</p>之间的东西 -
后者。第一个太简单了,只需 $("p").innerHTML...
-
没有类或 ID 就很难做到。
-
对我来说这简直是不可能的事……我已经挠头好几个小时了。
-
HTML 还有更多内容吗?
标签: jquery-selectors next