如何在jQuery中使用加载页面的新标题更改.load()页面的标题

时间:2013-03-13 14:35:14

标签: javascript jquery html

我对.load()$.ajax感到困惑。我的index.html中有以下jQuery代码:

$('.load_ext').click(function(e) {    
    var url = $(this).attr("href");
    parentContainer.append($(document.createElement("div")).load(url + ' #content_to_load').html('<p class="loading">Loading&#8230;</p>').hide().fadeIn('slow'));
})

和HTML:

<a href="test.html" class="load_ext">test</a>

在上面的示例中,我正在加载test.html(id #content_to_load的内容)中的部分内容。我还想获取该test.html页面的标题,并将index.html标题页替换为该页。

我尝试过这样的事情:

var url = $(this).attr("href");
parentContainer.append($(document.createElement("div")).load(url + ' #content_to_load', function() { 
     console.log($(document).attr('title'));
}).html('<p class="loading">Loading&#8230;</p>').hide().fadeIn('slow'));
没有任何运气。它给了我当前的页面标题。如何通过执行以下操作来替换标题:

$('title').text(newPageTitle);

谢谢!


修改 感谢@Jeff Schafer,@ dystroy和@zeroflagL,我设法解决了这个问题。这是更改后的代码:

var url = $(this).attr("href");
parentContainer.append($(document.createElement("div")).load(url + ' #content_to_load', function(responseText) {
  var title = responseText.match(/<title>([^<]*)/)[1];
  document.title = title;
}).html('<p class="loading">Loading&#8230;</p>').hide().fadeIn('slow'));

3 个答案:

答案 0 :(得分:3)

load的主要问题是jQuery在构建DOM片段时,剥离了不是正文的东西。您可以使用它来获取远程页面的标题:

$.get(url, function(html){
    var matches = html.match(/<title>([^<]*)/);
    if (matches.length>0) {
        var title = matches[1];
        document.title = title;
    }
});

请注意,如果远程页面来自不同的来源并且不特别允许跨域请求,则此操作无效。

答案 1 :(得分:2)

您可以通过responseText获取新页面的标题:

.load(url + ' #content_to_load', function(responseText) {

repsonseText实际上是文本,是页面的源代码。例如,您可以使用正则表达式来提取test.html的标题。然后,您可以使用document.title = newTitle更改标题。

答案 2 :(得分:1)

尝试使用此代码更改页面标题

document.title = newPageTitle;

希望有所帮助