jquery 或 vanilla javascript 自动加载(jquery 加载)页面中的所有链接内容

Posted

技术标签:

【中文标题】jquery 或 vanilla javascript 自动加载(jquery 加载)页面中的所有链接内容【英文标题】:jquery or vanilla javascript auto load(jquery load) all link content in page 【发布时间】:2018-03-06 19:16:27 【问题描述】:

我看到了下载链接的选项,但没有找到自动下载所有链接的选项。

我需要自动加载,使用 jquery load 或 ajax 或 http request 或 loadPageSection 并不重要。任何选项都可以。

首先我想出了一个最简单的版本,在每个链接上都有点击模拟。

$(function() 
  document.querySelector('.className').click();
);

$("a").click(function() 
  $("#pageLoad").load($(this).attr("href"));
  return false;
);

但是,它用作重定向,重定向到第一页。 接下来,我替换了每个(function() 上的点击,虽然到目前为止只加载了第一页,但一切正常

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function () 
  $('a').each(function() 
    $(".pageLoad").load($(this).attr('href') );
  );
);
</script>
<table align="center">
  <tr><td>
  <a href="test.html" class="className">first</a>
  <div class="pageLoad"></div></td><td>
  <a href="test1.html" class="className">second</a>
  <div class="pageLoad"></div></td><td>
  <a href="test.html" class="className">third</a>
  <div class="pageLoad"></div></td></tr>
</table>

必须加载所有页面。在每个&lt;a href 理想情况下,不应该有&lt;div class = "pageLoad"&gt;,并且应该自动添加所有内容,生成 div 并可能作为子项添加。

最重要的是,jQuery 使得使用load ('test.html #target'); 下载所需元素成为可能,现在该怎么做?

$(". pageLoad").load($ (this #target).attr ('href')); 不起作用?

这种情况下如何下载需要的片段?

最后一个:如果加载的页面也有链接,会不会有什么问题?现在,虽然所有内容都加载了 1 次,但没有任何问题。

对于页面上的所有链接,只需要加载一次链接的内容。

这些问题的解决方案对我来说太复杂了。

更新:

<script>
$.ajaxSetup(
'beforeSend' : function(xhr) 
xhr.overrideMimeType('text/html; charset=windows-1251');
,
);

$(function () 
$('a').each(function() 
$(this).parent().find(".pageLoad").load($(this).attr('href') + ' #inf-1751');
);
);
</script>

我修复了编码的显示。 最后一个问题是在元素上使用锚点。如果你只添加 锚,然后加载页面的副本,如果到另一个页面,锚也不起作用,加载整个页面。

【问题讨论】:

所以你想将页面加载到每个单独的 div 中? 虽然对于每个人来说,拥有一个通用功能会更好,但对我来说已经足够了,这样的结果,总是使用正则表达式添加一个 div 或通过相当容易的创建。 我相信我明白了,请查看我的更新答案。 【参考方案1】:

如果您想将每个页面加载到每个与链接相关的容器.pageLoad,那么它可能看起来像这样。

$('a').each(function() 
   $(this).parent().find(".pageLoad").load($(this).attr('href') );
);

如果您想即时添加.pageLoad

$('a').each(function() 
   $(this).after('<div class="pageLoad"/>').load($(this).attr('href'));
);

无需手动添加.pageLoad

<table align="center">
  <tr>
    <td>
       <a href="test.html" class="className">first</a>
    </td>
    <td>
       <a href="test1.html" class="className">second</a>
    </td>
    <td>
       <a href="test.html" class="className">third</a>
    </td>
  </tr>
</table>

【讨论】:

以上是关于jquery 或 vanilla javascript 自动加载(jquery 加载)页面中的所有链接内容的主要内容,如果未能解决你的问题,请参考以下文章

在 jQuery 或 vanilla JavaScript 中过滤 JSON 数据

从 jQuery 或 vanilla javascript 事件触发合成 ExtJS 事件

当弹出窗口关闭时,我将如何引发事件(jQuery 或 vanilla Javascript)?

vanilla javascript图像缩放滚动效果

jQuery UI Dialog 小部件是不是有 Vanilla JS 替代品[关闭]

javascript JQuery到Vanilla js指南