猿问

如何使用 jQuery 在 load() 上保留 url 的#-part?

我将一个 html 加载到一个right-body使用 jQuery调用的 div 中:


$("#right-body").load( "views/" + $(this).attr("page")+ ".html");

这将重新加载整个页面。因此,我丢失了 url 的哈希值。我怎样才能保持哈希?


我尝试在重新加载后重置它:


var hash = window.location.hash;

$("#right-body").load( "views/" + $(this).attr("page")+ ".html");

window.location.hash = hash;

但它不起作用。window.location.hash = hash;似乎是无效的。


四季花海
浏览 165回答 3
3回答

杨__羊羊

如果页面在执行后重新加载.load(),您的哈希值将重置为undefined。您可以潜在地使用本地或会话存储并在页面重新加载后检索散列,而不是将其存储在变量中。

万千封印

试试这个:if(typeof page === "undefined"){    var page = "";}if(page !== ""){    page = "views/" + $(this).attr("page")+ ".html";}$("#right-body").load(page);注意! 我不建议在那时使用 id,因为它会一次又一次地重复。因此,您需要更改“子”页面的 ID。告诉我如果它不起作用!

繁星点点滴滴

通过window.location.hash = hash;作为回调解决它。. 然而,可能不是最好的解决方案,因为您可以看到从“#”到“#myhashparams”的 url 闪烁...$("#right-body").load( "views/" + $(this).attr("page")+ ".html", () => {window.location.hash = hash;});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答