我在如何使用jQuery地址插件 - http://www.asual.com/jquery/address/-和我有限的jQuery / javascript知识方面遇到了一些困难,并且会认真地挖掘一些帮助!
到目前为止,我的代码看起来像这样:
jQuery(function($) {
$.ajaxSetup({ cache: false });
var hijax = $('ul.hijax a');
var loader = $('<div id="spinner"></div>');
var container = $('#ajax-container');
hijax.address(function() {
dis = $(this);
hijax.removeClass('ajax-on');
dis.addClass('ajax-on');
var url = dis.attr('href') + ' #biog-container';
container.html(loader).load(url);
return dis.attr('id');
});
});
我希望这是相当自我解释的。我有ul
个链接指向我通过AJAX加载div
id
biog-container
id
个内容的页面。 AJAX工作正常,并且使用链接的{{1}}更新网址,但是当我点击后退按钮时,网址会更改,但内容保持不变。
有任何想法,我是傻瓜吗?!
答案 0 :(得分:1)
说实话,address
方法对你的工作方式没有太多帮助。实际上,该插件不会自动添加支持。
然而,这很简单。您只需设置change
方法的处理程序:
$.address.change(function(e){
// The function receives a single eventobject parameter that contains the
// following properties:
// value, path, pathNames, parameterNames,
// parameters, queryString
/* Do something based on e */
});
更改地址后,您的函数会被触发。还有其他事件internalChange
和externalChange
可以设置为在内部或外部发生地址更改时触发。
修改:只是为了扩展上述内容:
这是一个完整的例子。换句话说,您无需在插件中调用任何其他内容即可使用它:
// Override the click events of links
$("a").click(function(e) {
e.preventDefault();
$.address.path(this.id);
});
// Method called with the address changes
$.address.change(function(e) {
// This is called when the
$("#content").html("Something based on " + e.value);
});
单击链接时,会将地址路径(就插件而言)设置为链接的ID。这会生成一个动作,以便后退/前进正常工作。它不会更改链接本身,因此如果未启用JavaScript,它将转到链接地址。
$.address.change
位设置处理程序。这是您加载内容的地方。在我的示例中,它使用e.value
来获取地址路径的值。所以这就像/link1
,/link2
等。当内部(通过插件)或外部(通过浏览器后退/前进)更改链接时,将调用此处理程序。
注意:我注意到这与jQuery 1.5.1无法完美配合。我很确定它与jQuery 1.5属性选择器(地址插件似乎使用的)的更改有关。 jQuery 1.4工作正常。