0

基本问题是这个...

我的网站是这样设置的:

<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 将继续不间断播放,但新页面上的播放链接和自动完成功能将不再起作用,除非您点击刷新按钮,重新加载整个网站(这显然不是我的目标因为首先通过ajaxing这个东西)。

提前谢谢了,

G ;)

4

1 回答 1

3

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

有 2 个选项可以处理此问题:

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

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

于 2013-06-06T04:32:06.823 回答