【问题标题】:smoothDivScroll fails if run within the .load() event handler如果在 .load() 事件处理程序中运行,smoothDivScroll 会失败
【发布时间】:2013-04-06 22:09:03
【问题描述】:

smoothDivScroll 1.3 如果在 $(window).load() 内调用,我会失败。看到这个jsFiddle

.load() 事件处理程序已被弃用,因此我尝试像这样使用imagesLoaded jQuery 插件:

(function ($) { if($('.scroller').length)
    $('.scroller').imagesLoaded(function() {
        $('.scroller').smoothDivScroll({});
    });
})(jQuery);

但这在 Safari、Chrome 和 Opera 中也失败了。这些浏览器的控制台中不会显示任何错误。虽然它在 Firefox 中有效。浏览器版本是最新的。

任何想法为什么会失败?

【问题讨论】:

  • 为什么需要在load事件中调用呢?我只是在没有负载的情况下尝试了它,它工作得很好(smoothScroll)。有什么意义?
  • 是在所有图片加载完毕后运行回调函数。虽然 .load() 在这方面有点inconsistent。我认为它不会在DOM is fully loaded 之前运行,但可能会稍后运行。这也是我尝试使用 imagesLoaded 插件的原因。
  • 小提琴有用吗?设置为使用onDomReady,你试过$(document).ready吗?
  • @iGanja smoothDivScroll 确实适用于$(document).ready(),但我的问题是关于使用.load()
  • 我想我错过了一些东西。 jQuery 一般建议在大多数情况下使用 $(document).ready(),所以如果它有效,我很困惑为什么我们必须使用 .load()?

标签: jquery smooth-scrolling


【解决方案1】:

您粘贴的 sn-p 失败,因为在执行该函数时不一定会加载 .scroller,因此返回的 length 为 0。只需将其放在 $(document).ready 处理程序中即可。或简称:

$(function() {
    $('.scroller').smoothDivScroll({});
});

JSFiddle 为您添加了这一点,但在您的脚本中,您需要将依赖于 DOM 元素的代码包装到这样的函数中。

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多