到目前为止,我已经创建了代码来执行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之外,我还会提供。
答案 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'