jQuery - 如果元素存在于两个元素之间

时间:2014-03-06 14:15:39

标签: javascript jquery each

我有一些标记,其中有img标签,有时在图像之间有一段。我想使用javascript(jQuery)来查找此元素(如果存在)。但是,此标记是通过CKEditor插入的,因此确切的标记可能会有所不同。

理想情况下,标记看起来像这样:

<img src="something.jpg">
<img src="something2.jpg">
<p>Some text</p>
<img src="something3.jpg">
<p>Some other text</p>

但它可能更像是这样:

<img src="something.jpg">
<br>
<p>Some text</p>
<img src="something2.jpg">
<p>Some text</p>
<img src="something3.jpg">
<br>
<p>Some text</p>

所以我可能需要创建一个img标签数组,遍历每个标签并在这个img标签和下一个标签之间找到

,无论它在哪里。我如何使用jQuery做到这一点?

可能是这样的:

var img_array = $('#container').find('img');

img_array.each(function(){
   // Do something here
})

编辑:这是我最终如何做到的:

var img_array = $('#container').find('img');
img_array.each(function(){
  var between = $(this).nextUntil('img');
  var text = between.text();
})

nextUntil返回介于两者之间的一组元素。所以我只是将其剥离并仅保留简单文本。像cherrm一样工作! :)

2 个答案:

答案 0 :(得分:1)

您只需使用nextUntil

例如,以下内容将匹配匹配图片与下一张图片之间的每个<p>标记。

$('img[src="something.jpg"]').nextUntil('img', 'p');


<img src="something.jpg">
<br>
<p>Some text</p>            <--
<img src="something2.jpg">

答案 1 :(得分:0)

您无法选择使用基本jquery选择器,例如$( "img + p" )$( "img + br + p" ) 这将选择您要使用的元素。

http://jsfiddle.net/WFnWW/