You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jQuery获取指定script标签间的所有DOM元素?

使用jQuery获取指定script标签之间的所有元素

当然可以做到!我来给你捋捋具体的实现思路和代码,完美适配你给出的DOM结构。

首先看你的DOM结构,highlight/begin和highlight/end这两个script标签分别在不同的<p>元素里,所以我们得分三部分来收集中间的元素:

  • 开始script所在父元素中,它之后的所有元素
  • 开始父元素与结束父元素之间的所有兄弟元素
  • 结束script所在父元素中,它之前的所有元素

下面是完整的jQuery代码,每一步都加了注释,方便你理解:

// 1. 先定位到开始和结束的标记script
const $begin = $('script[type="highlight/begin"]');
const $end = $('script[type="highlight/end"]');

// 用来存储中间元素的数组
const elementsBetween = [];

// 2. 收集开始script所在父元素中,它之后的所有元素
$begin.parent().contents().each(function() {
  // 跳过开始script本身
  if ($(this).is($begin)) return true;
  // 如果结束script刚好在同一个父元素里,提前结束遍历
  if ($(this).is($end)) return false;
  elementsBetween.push(this);
});

// 3. 收集开始父元素和结束父元素之间的所有兄弟元素
$begin.parent().nextUntil($end.parent()).each(function() {
  // 把整个兄弟元素加进去,如果需要它的所有子元素,也可以追加 $(this).find('*').each(...)
  elementsBetween.push(this);
});

// 4. 收集结束script所在父元素中,它之前的所有元素
$end.parent().contents().each(function() {
  // 遇到结束script就停止遍历
  if ($(this).is($end)) return false;
  elementsBetween.push(this);
});

// 5. 把收集到的元素转成jQuery对象,方便后续操作(比如绑定事件、修改样式等)
const $elementsBetween = $(elementsBetween);

// 测试示例:输出所有元素的文本内容
$elementsBetween.each(function() {
  console.log($(this).text().trim());
});

补充小提示

  • 如果你的DOM嵌套更深,可以根据需求调整代码,比如在收集兄弟元素时,同时把它们的子元素也加入数组
  • 代码里用了.contents()而不是.children(),所以会包含文本节点(比如你的第二个<p>里的纯文本),如果只需要元素节点,把.contents()换成.children()即可

内容的提问来源于stack exchange,提问作者user-17171

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:46:10