jquery多个链接从目标href页面中的id替换文本

时间:2017-08-20 22:11:02

标签: javascript jquery html

我正在尝试使用jquery,并认为让我的链接从其来源获取内容会很舒服。我不确定它是否可能。

<a href="page1.html" >pagetitle</a>
<a href="page2.html" >pagetitle</a>

我想要实现的是替换&#34; pagetitle&#34;来自#title id的文本,例如:&#34;我的第1页和第34页;来自目标,每个链接,页面加载。

页面中的源元素:

<h1 id="title">My page 1</h1>

期望的输出:

<a href="page1.html" >My page 1</a>
<a href="page2.html" >My page 2</a>

我尝试了各种解决方案,但我无法实现所需的行为。 如果用jquery不可能,告诉我也会有所帮助!谢谢你的时间。

编辑:我尝试了一些基本的行:

这有效,但当然只有一页,所以显然每个标题都是一样的。

$( 'a' ).load( 'page1.html .title' ).text();

这些不会奏效,也许我有点笨拙!

$( 'a' ).load( 'a.attr("href") .title' ).text();

var distantcontent = $('a.attr("href")');
$( 'a' ).load( 'distantcontent .title' ).text();

2 个答案:

答案 0 :(得分:0)

您需要遍历各个元素。像这样:

$('a').each(function() {
  u = $(this).attr('href');
  console.log('$(this).load(' + u + ' .title)');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="page1.html">My page 1</a>
<a href="page2.html">My page 2</a>

答案 1 :(得分:0)

试试这个...它适用于我制作的测试页。

请参阅代码中的注释。

$(document).ready(function(){
  // Get all the href (If there is!)
  var hrefArray = [];
  $("a").each(function(){
    if( $(this).attr("href") !="#" && $(this).attr("href") != "undefined" ){
      hrefArray.push( $(this).attr("href") );
    }
  });

  var i = 0;
  function getTitles(href, i){
    $.ajax({
      url: href,
      success: function(response){
        // Stringify the result
        var responseString = response.toString();

        // Get the index of the title tag
        var titleTagIndex = responseString.indexOf("<title>");

        // If the title tag IS found
        if(titleTagIndex != -1){

          // Find the index of the title closing tag
          var titleClosingTagIndex = responseString.indexOf("</title>");

          // Get the sub-string between the two indexes we found.
          title = responseString.substr(titleTagIndex+7,titleClosingTagIndex-(titleTagIndex+7));
          console.log("Title found: "+title);

          // Replace the link text.
          $("a").eq(i).text(title);
        }

        // Get the next title
        i++;
        if(i<hrefArray.length){
          getTitles(hrefArray[i], i);
        }
      },
      error: function(request, status, error){
        console.log(error);
      }
    })
  }

  // Get the first title
  getTitles(hrefArray[i], i);
});

现在,使用ajax逐个请求标题 您会注意到它在加载时填充标题的延迟。

如果您的页面上还有外部链接,而不是$("a"),请使用类定位您的“相同域”链接...因为ajax将在外部链接上失败并且只是停止循环。< / p>