我确信这很简单,但我没有得到它。
我正在使用以下AJAX脚本将外部页面的特定div中的内容加载到我的根页面上的同名div中。
$(function() {
var newHash = "",
$mainContent = $("#main-content"),
$pageWrap = $("#page-wrap"),
$el;
$(document).delegate(".dyn a", "click", function() {
window.location.hash = $(this).attr("href");
return false;
});
$(window).bind('hashchange', function(){
newHash = window.location.hash.substring(1);
if (newHash) {
$mainContent
.find("#guts")
.fadeOut(200, function() {
$mainContent.hide().load(newHash + " #guts", function() {
$mainContent.fadeIn(200, function() {
$pageWrap.animate({
});
});
$(".dyn a").removeClass("current");
$(".dyn a[href="+newHash+"]").addClass("current");
});
});
};
});
$(window).trigger('hashchange');
});
有人可以帮我更改我正在加载的页面标题的根页标题吗?
我尝试过使用:
var newTitle = $(responseHtml).filter('title').text();
document.title = newTitle;
正如它在this帖子中提到的那样,它几乎起作用但却阻止了ajax的正常运作。我不确定,不过我是否把它放在正确的地方。
提前致谢!
答案 0 :(得分:1)
你可能想要:window.top.document.title = newTitle;
?
答案 1 :(得分:1)
我设法通过在hashchange函数中添加以下内容来实现此目的:
String.prototype.toTitleCase = function(n) {
var s = this;
if (1 !== n) s = s.toLowerCase();
return s.replace(/\b[a-z]/g,function(f){return f.toUpperCase()});
}
newHash = window.location.hash.substring(1);
function changeTitle(title) {
document.title = window.location.hash.replace("#","").replace(/[_]/g,"").replace(".html","").replace("and","+").toTitleCase(); }
changeTitle("");
这将从页面文件名中获取标题,删除散列和任何下划线,然后将每个单词的第一个字母大写。
我确信有更好,更简单的方法。我现在所做的将会做什么。