问题描述
||
我对AJAX不太熟悉,目前正在学习如何在演示站点上实现jQuery Address,以便可以将其移植到我正在从事的个人项目中。
虽然我可以通过超链接加载所需的内容并修改URL哈希,但是如果直接在浏览器栏中输入URL哈希,则无法导航到特定状态。
当前代码如下所示:
$(\"h2.entry-title a\").live(\'click\',function(event) {
event.preventDefault();
$(\"#content\").fadeOut(\"slow\").load($(this).attr(\"href\")+\" #content > *\",function() {
$.address.value(\"?page=entry\");
}).fadeIn(\"slow\");
});
我尝试寻找有关使用jQuery Address来实现深度链接的教程和演示,但到目前为止,它并没有取得什么成果。
感谢你的帮助 :)
p / s:之所以使用.live()
而不是.bind()
是因为在某些时候会动态插入更多条目标题。
解决方法
首次加载页面时,此代码中没有读取URL的内容。如果您在地址栏中输入\'http://test.com/test.html?page = entry \',则需要在页面加载时,手动更改哈希值以及单击事件时加载内容。
http://abishaigray.com/jquery.address.php
$(function() {
var content = $(\"#content\");
var loadUrl = function(url) {
content.fadeOut(\"slow\",function() {
content.load(url + \" #content > *\",function() {
content.fadeIn(\"slow\");
});
});
};
$(\"a.loadUrl\").live(\'click\',function(event) {
event.preventDefault();
$.address.parameter(\"page\",$(this).attr(\"href\"));
});
$.address.change(function(vars) {
var page = $.address.parameter(\"page\");
if (page) { loadUrl(page); }
});
});
我利用了$.address.change
事件。这样,无论何时您更新url或用户首次到达时,内容都会重新加载。