jQuery选择在两个字符串标识符之间的HTML内容

12

我想制作一个图片幻灯片,但我只有一个富文本编辑器来输入图片和文字。因此,从这个HTML开始:

<h1>title</h1>
<p>description...</p>

<p>#slider</p>

<p><img src="a.jpg" /></p>
<p><img src="b.jpg" /></p>
<p><img src="c.jpg" /></p>

<p>#end-slider</p>

如何选择 #slider 和 #end-slider 之间的html内容?

这类似于从博客评论中提取 [link]http://google.com[/link] 之间的文本。


#slider 是一个 ID 还是文本内容? - Ram
2
并不是“类似”,方括号 [tags] 只能通过正则表达式进行解析 - 通常在服务器端进行清理(嵌套标签等)。现在你正在呈现具有文本节点的实际 DOM 元素,当然你可以使用正则表达式解析它们,但是有更好的方法来解决这个问题。 - Fabrício Matté
3个回答

8
$(document).ready(function() {
    $('p:contains("#slider")')
      .nextUntil('p:contains("#end-slider")')
      .wrapAll("<div id='stuff'></div>");
    var required = $('#stuff').html();
});

http://jsfiddle.net/483kL/


1
当然,:contains选择器可能会捕获一些意外的内容,例如 <p>#slider***headkeyboard***dsgdfhdfjdfj</p>。不过楼主可能觉得没关系。 - Fabrício Matté

6

试试这个:

$('p:contains("#slider")').nextUntil('p:contains("#end-slider")')

更新:

var end = $('p:contains("#end-slider")');
$('p:contains("#slider")').nextUntil(end).andSelf().add(end)

http://jsfiddle.net/63kQC/


谢谢,这个很有效!还想知道是否有一种方法可以选择全部内容,包括标识符和HTML代码,例如#slider html #end-slider? - Paul Mason

2

试试这个

$(document).ready(function(){
   $('p:contains("#slider")').nextUntil('p:contains("#end-slider")');
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接