【问题标题】:How to continue allowing jquery ajax request on clicking different links?如何在单击不同链接时继续允许 jquery ajax 请求?
【发布时间】:2014-05-05 18:07:27
【问题描述】:

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

我尝试过:绑定和取消绑定我的链接、on(click) 和 off(click)、$.ajax(url, success: function(results))、$.get(url, function(data))

我认为这可能与我的链接有关,因为我不确定我是否正确绑定、取消绑定和重新绑定它们。找了一天,筋疲力尽。

还有一点需要注意。有些链接只是 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,我会提供。

【问题讨论】:

    标签: jquery html express onclick


    【解决方案1】:

    不确定这是否能解决您的问题,或者我是否正确理解了您的问题,但我注意到了几点:

    当您使用.on('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'

    【讨论】:

    • 我正在让我的网络团队为此加 1 个你。它就像一个魅力!太感谢了!!!我会记住这些课程,这样我就不会遇到未来的问题!
    猜你喜欢
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    相关资源
    最近更新 更多