jQuery地址插件帮助

时间:2011-03-02 12:49:30

标签: jquery ajax jquery-plugins browser-history

我在如何使用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}}更新网址,但是当我点击后退按钮时,网址会更改,但内容保持不变。

有任何想法,我是傻瓜吗?!

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 */
});

更改地址后,您的函数会被触发。还有其他事件internalChangeexternalChange可以设置为在内部或外部发生地址更改时触发。


修改:只是为了扩展上述内容:

这是一个完整的例子。换句话说,您无需在插件中调用任何其他内容即可使用它:

// 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工作正常。