【问题标题】:Gallery slider bug while loading content via AJAX in jQuery在 jQuery 中通过 AJAX 加载内容时库滑块错误
【发布时间】:2011-02-05 22:45:27
【问题描述】:

我正在使用一个 jQuery 插件 (link) 将外部页面拉入我主页上的 div 中,并且每个外部页面都包含一个基于 jQuery 的水平画廊滑块。

例如:http://www.iamtimothylong.com/example

您会注意到,当通过 AJAX 请求加载外部页面时(通过单击“第一本书”或“第二本书”),这些外部页面中的水平滑块停止工作。

但是,如果将水平滑块静态放置在 div 中,它确实可以工作(很明显这不是滑块本身的问题)。

有人知道解决方案/解决方法吗?一个人说

“您需要在 XHR 请求完成后将滑块重新绑定到新元素。在 AJAX 请求的成功处理程序中,执行 mScrollBar() 绑定。”

不幸的是,我是一个编程无知的人,我需要用外行的话来说明它。 :)

而 AJAX 加载器源位于此处:/js/menu.js

【问题讨论】:

  • 需要查看滑块的代码。
  • js/jquery.mCustomScrollbar.js - 页脚中还有一个内联部分(我添加了一个注释供参考)

标签: javascript jquery ajax slider mcustomscrollbar


【解决方案1】:

我会说这是用.live('event')替换未触发的事件的经典案例

基本上,当 javascript 被触发并在页面加载时附加事件处理程序时(或每当它们被调用时),它会将它们附加到当时存在于页面上的当前现有元素,因此当您加载新内容时(通过 AJAX)这些事件不会附加到刚刚加载并匹配选择器的新内容事件。

为了解决这个问题,jQuery 有一个 .live() 事件来匹配任何当前存在的 DOM 元素 AND 未来动态添加的元素。

【讨论】:

  • 乔恩,非常感谢您的详尽回答。我确实尝试将该处理程序附加到我认为已应用但仍然存在问题的事件(很可能是由于我的错误)。如果可能,请查看滑块的来源,看看您是否有任何输入:iamtimothylong.com/example/js/jquery.mCustomScrollbar.js 我想它将适用于鼠标滚轮和水平滚动。再次感谢!
  • 该链接给了我一个 404,这可能是问题的一部分。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多