如何在点击不同的链接时继续允许jquery ajax请求?

时间:2014-03-27 00:57:44

标签: jquery html5 express onclick

到目前为止,我已经创建了代码来执行ajax请求并从服务器提取信息。我可以点击链接,它会将我带到一个页面,ajax样式,页眉和页脚不刷新,但是当我点击另一个链接时,它会中断,页面会刷新。我需要ajax才能工作,以便页脚中的音乐播放器将继续在页面之间播放。

我尝试过:在我的链接上绑定和取消绑定,在(点击)和关闭(点击),$ .ajax(网址,成功:功能(结果)),$ .get(网址,功能(数据) ))

我认为它可能与我的链接有关,因为我不确定我是否正确绑定,取消绑定和重新绑定它们。我整天都在搜索,筋疲力尽。

另一件需要注意的事情。有些链接只是domain.com/page/,其他链接是domain.com/folder/page,我不确定这是否有所不同。

代码块:这是我最近的尝试。

$('a').on('click', function(){
    linkHref = $(this).attr('href'); // gets url for ajax get request
    linkHtml = $(this).html(); // I just grabbed this for the url updater

    $.get(linkHref, function(data){
        $('#lkobody').html(data);  //wrapper of my content, so stuff here gets replaced by requested page 
        }
    ).done(function(){
        // Updates my url after the ajax does it's thing.
        window.history.replaceState('Larry King Orchestra', linkHtml, linkHref);
        $('a').off('click'); //trying to turn the click off so I can use it again.
    });

    return false;
});

另外需要注意的是,当我在浏览器控制台中时,我可以不断粘贴我创建的$ .get和$ .ajax块,只需更改我请求的页面URL,它就可以完美运行。就在我尝试使用链接点击时...第二次点击失败并完全重新加载页面。

注意:一遍又一遍地听同一首歌就是杀了我......酷刑......请救救我......

哦,如果您需要任何其他信息,除了我的信用卡和ssn之外,我还会提供。

1 个答案:

答案 0 :(得分:2)

不确定这是否解决了您的问题,或者我是否正确理解了您的问题,但我注意到了一些事情:

使用.on('click'..)时,它只会将click事件绑定到页面上的链接,如果您动态加载内容,则需要重新绑定click事件。 基本上在ajax回调中再次调用它:

$('a').on('click', function(){}); 

您可以将其绑定到文档,而不是不断重新绑定:

$(document).on('click','a',function(e){ 
      e.preventDefault() // prevent the default behavior of the link
      // magic here 
});

这将保证活动将被绑定到任何新的' a'元素也是。 但是,我强烈建议不要将ajax请求绑定到每个' a'元素,而是使用类,因为这将使您更好地控制正在发生的事情。例如:

$(document).on('click', '.ajaxLink', function(e){
          e.preventDefault() // prevent the default behavior of the link
          // magic here 
});

然后将任何内容链接到班级' ajaxLink'