Javascripts在AJAX页面加载后停止工作

时间:2013-06-06 03:53:22

标签: javascript ajax autocomplete history.js

基本问题是......

我的网站设置如下:

<player> // A fixed div that contains JPlayer and it's playlist
<main> // all content in here is ajaxed including the links to mp3's for the player

基本上一切正常,直到你点击一个加载新页面的链接,此时JPlayer拒绝再加载歌曲,而JQuery自动完成(在搜索框中)停止工作。

请您查看该网站,看看是否可以告诉您在Ajax加载后导致脚本失败的原因是什么?

要查看问题:

1)点击此链接 - http://bit.ly/ajaxtest

2)点击页面上任意一首曲目上的播放按钮

3)一旦播放歌曲,请点击“最受欢迎的版本”部分中的专辑封面

4)新页面将加载,Jplayer将继续播放不间断但播放链接&amp;然后新页面上的自动完成将不再有效,除非你点击刷新按钮,它只是重新加载整个网站(这显然不是我首先想要的东西)。

非常感谢,

G;)

1 个答案:

答案 0 :(得分:3)

删除旧“页面”的DOM片段时,还会删除绑定到其中元素的所有事件处理程序。

有两种方法可以解决这个问题:

  1. 委派您的事件处理程序,以便它们能够在页面更改后继续存在;在jQuery中,这看起来像$(document).on('click', '.play', ...)而不是$('.play').on('click', ...)

  2. 或者,您可以在插入事件后将事件重新绑定到新的“页面”,即在ajax调用完成后再运行事件绑定设置并重新初始化插件,并且新的“页面”在DOM中