Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery地址插件帮助_Jquery_Ajax_Jquery Plugins_Browser History - Fatal编程技术网

jQuery地址插件帮助

jQuery地址插件帮助,jquery,ajax,jquery-plugins,browser-history,Jquery,Ajax,Jquery Plugins,Browser History,我在研究如何使用jQuery地址插件时遇到了一点困难,因为我的jQuery/javascript知识有限,我会认真地寻找一些帮助 到目前为止,我的代码如下所示: jQuery(function($) { $.ajaxSetup({ cache: false }); var hijax = $('ul.hijax a'); var loader = $('<div id="spinner"></div>'); var container = $('#

我在研究如何使用jQuery地址插件时遇到了一点困难,因为我的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');
   });
});
jQuery(函数($){
$.ajaxSetup({cache:false});
var hijax=$('ul.hijax a');
变量加载器=$('');
var container=$(“#ajax container”);
地址(函数(){
dis=$(本);
removeClass('ajax-on');
dis.addClass('ajax-on');
var url=dis.attr('href')+'#biog container';
container.html(loader.load)(url);
返回dis.attr('id');
});
});
我希望这是一种自我嘲讽。我有一个
ul
的页面链接,我通过AJAX加载
div
的内容,其中
id
biog container
。AJAX工作正常,url使用链接的
id
s进行更新,但当我单击后退按钮时,url会更改,但内容保持不变


有什么想法吗,我是不是很蠢

老实说,
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
,您可以设置在地址发生内部或外部更改时触发这些事件


编辑:仅对上述内容进行扩展:

这是一个完整的it工作示例。换句话说,您不需要调用插件中的任何其他内容即可使其工作:

// 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);
});
  • jsFiddle:
  • 完整浏览器示例:(查看后退/前进)
  • 直达深层链接:
单击链接时,它会将地址路径(就插件而言)设置为链接的ID。这将生成一个操作,以便“后退/前进”正确工作。它不会更改链接本身,因此如果未启用JavaScript,它将转到链接地址所在的位置

$.address.change
位设置处理程序。这是加载内容的地方。在我的示例中,它使用
e.value
获取地址路径的值。因此,这类似于
/link1
/link2
,等等。当链接在内部(通过插件)或外部(通过浏览器向后/向前)更改时,会调用此处理程序


注意:我注意到jQuery 1.5.1不能完美地实现这一点。我很确定这与jQuery1.5属性选择器(address插件似乎在使用)的更改有关。jQuery 1.4运行良好。

我应该补充一点,我的链接是我正在创建的常规链接,因此链接将指向一个真实的网页,例如:mywebsite.com/this/page/right/here/Hi@Jonathan,感谢您的回复。恐怕你给我定的标准太高了一点!我只是一个卑微的设计师,尽管我尽了最大的努力,我还是无法让我的大脑明白如何处理这些信息。还有小费吗?!干杯:)嗨,安迪-我给你做了一个更新。希望它能进一步解释:)伙计,那太棒了!我搞不懂的是如何将单击链接的url传递到address.change函数@Richard传递给
address.change
函数的值来自location对象上的散列。在上面的示例中,我通过调用
$.address.path(this.ID)
将此值设置为链接的ID。如果要将此值设置为单击链接的URL,请将其更改为
$.address.path(this.href)