Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 Can';我无法让history.js正常工作_Jquery_Ajax_Html_History.js - Fatal编程技术网

Jquery Can';我无法让history.js正常工作

Jquery Can';我无法让history.js正常工作,jquery,ajax,html,history.js,Jquery,Ajax,Html,History.js,我希望我能在history.js插件方面得到一些帮助。我在stackoverflow和github上尝试了很多例子,试图让它工作起来,但我一辈子都做不到 我正在努力实现的目标: 我有一个文章列表,其中包含一个用于SEO目的的href链接和一个用于该页面ajax版本的数据属性(如果我可以使用link=canonical,这是否有必要?) 当我点击一篇文章时,一个div向上滑动,内容被加载到其中 URL被更新为“example.com/article/this is The article name

我希望我能在history.js插件方面得到一些帮助。我在stackoverflow和github上尝试了很多例子,试图让它工作起来,但我一辈子都做不到

我正在努力实现的目标:

  • 我有一个文章列表,其中包含一个用于SEO目的的href链接和一个用于该页面ajax版本的数据属性(如果我可以使用link=canonical,这是否有必要?)
  • 当我点击一篇文章时,一个div向上滑动,内容被加载到其中
  • URL被更新为“example.com/article/this is The article name”或任何文章名称,因此用户可以在不重新加载页面的情况下返回两篇文章
  • 如果只访问example.com,面板和内容都会消失
  • 我输出的html:

    <a href="http://example.com/article/this-is-the-article-name" data-href="http://example.com/article/ajax/this-is-the-article-name" class="ajax-click"></a>
    
    <div id="panel" class="hidden"></div>
    
    我在上面有jQuery库和捆绑的html4+5历史插件。我想知道是否因为我输出的是完整的url,而不是“/article/article name”之类的内容,所以可能会导致问题


    任何帮助都将不胜感激,即使只是其中的一部分。谢谢

    快速提问,您使用的jQuery版本是什么?(因为
    .live
    已被弃用)还有,是否存在任何控制台错误?最终改为使用Ben Cherry的PathChange。我唯一能正常工作的图书馆。
    $(document).ready(function(){
    var History = window.History,
    State = History.getState();
    
    // not sure if this was doing anything to prevent clicks $('.ajax-click')[0].onclick = null;
    $('.ajax-click').live('click', function(e) {
        e.preventDefault();
        var path = $(this).attr('data-href');
        var title = $(this).attr('title');
        History.pushState('ajax',title,path);
                if ($('#panel').hasClass('hidden')) {
              $('#panel').slideToggle(500);
              $('.header').slideToggle(600);
        }
    });
    
    // Bind to state change
    // When the statechange happens, load the appropriate url via ajax
    History.Adapter.bind(window,'statechange',function() { // Note: Using statechange instead of popstate
    load_ajax_data();
    });
    
    function load_ajax_data() {
     State = History.getState();   
     $.post(State.url, function(data) {
        $("#panel").html(data);
        });
    
     }
    });