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

如何使用jQuery/JS选取外部页面div内容填充HTML页面

可行方案说明

你不需要硬编码文章ID就能取到最新3篇内容,nth-child选择器或者直接按顺序截取前N个元素的思路完全可行,两种实现方式可按需选择:


方案1:纯前端jQuery/JS实现

你之前用的jQuery.load()本身支持加载时筛选内容,但更稳定的方式是用$.get拉取完整外部页面内容后,转成DOM对象直接截取排序最靠前的3个文章节点,完全不依赖ID规则:

// DOM加载完成后执行
$(function() {
  // 加载政治栏目内容
  $.get('politics.html', function(pageContent) {
    // 取前3篇文章
    const latest3Pol = $(pageContent).children('div').slice(0, 3);
    latest3Pol.each(function(i) {
      // 填充标题,需要保留文章完整结构就直接替换整个Article块的html
      const title = $(this).find('.artPolTitle').text();
      $(`#ArtPOL${i+1} .ArticleTitle`).text(title);
    })
  })

  // 经济栏目逻辑一致,替换对应路径、ID前缀、标题class即可
  $.get('economy.html', function(pageContent) {
    const latest3Eco = $(pageContent).children('div').slice(0, 3);
    latest3Eco.each(function(i) {
      const title = $(this).find('.artEcoTitle').text();
      $(`#ArtECO${i+1} .ArticleTitle`).text(title);
    })
  })
})

注意:该方案要求politics.html、economy.html和index.php同域,否则会触发浏览器跨域限制无法读取内容。


方案2:PHP服务端渲染(更推荐)

你当前用的是PHP环境,直接在服务端完成内容拉取和解析再输出到页面是更优选择:首屏加载更快、不存在跨域问题、对无JS环境的用户也兼容。
核心实现代码如下:

<?php
// 通用解析函数,传入外部页面路径、文章ID前缀、标题class,返回最新3篇标题
function getLatest3Articles(string $filePath, string $idPrefix, string $titleClass): array {
  if (!file_exists($filePath)) return [];
  $dom = new DOMDocument();
  @$dom->loadHTML(file_get_contents($filePath));
  $xpath = new DOMXPath($dom);
  $articles = $xpath->query("//div[starts-with(@id, '{$idPrefix}')]");
  $result = [];
  for ($i=0; $i<3 && $i<$articles->length; $i++) {
    $title = $xpath->query(".//span[contains(@class, '{$titleClass}')]", $articles->item($i))->item(0);
    $result[] = $title ? trim($title->nodeValue) : '';
  }
  return $result;
}

$polArticles = getLatest3Articles(__DIR__.'/politics.html', 'artpol', 'artPolTitle');
$ecoArticles = getLatest3Articles(__DIR__.'/economy.html', 'arteco', 'artEcoTitle');
?>

页面渲染部分直接输出解析好的内容即可:

<div class="POLSection">
    <div class="Article" id="ArtPOL1">
        <span class="ArticleTitle"><?= $polArticles[0] ?? '' ?></span>
    </div>
    <div class="Article" id="ArtPOL2">
        <span class="ArticleTitle"><?= $polArticles[1] ?? '' ?></span>
    </div>
    <div class="Article" id="ArtPOL3">
        <span class="ArticleTitle"><?= $polArticles[2] ?? '' ?></span>
    </div>
</div>

<div class="ECOSection">
    <div class="Article" id="ArtECO1">
        <span class="ArticleTitle"><?= $ecoArticles[0] ?? '' ?></span>
    </div>
    <div class="Article" id="ArtECO2">
        <span class="ArticleTitle"><?= $ecoArticles[1] ?? '' ?></span>
    </div>
    <div class="Article" id="ArtECO3">
        <span class="ArticleTitle"><?= $ecoArticles[2] ?? '' ?></span>
    </div>
</div>

优化建议:服务端解析时可以加10-15分钟的文件缓存,不需要每次用户访问都重新解析外部HTML,能大幅降低服务器开销。


内容的提问来源于stack exchange,提问作者Stalkium

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:45:34