javascript - 简化功能,使代码不会变得太大

标签 javascript jquery

我有这段代码,以便每个元素在完成时产生滚动效果: 我不断地对每个元素重复这个函数,问题是要添加30个不同类的元素,代码会非常大。

jQuery:

  $(window).scroll(function () {
        $('.regalos').each(function () {
            var imagePos = $(this).offset().top;

            var topOfWindow = $(window).scrollTop();
            if (imagePos < topOfWindow + 400) {
                $(this).addClass("stretchLeft");
            }
        });

        $('.sprite-Layer-2').each(function () {
            var imagePos = $(this).offset().top;

            var topOfWindow = $(window).scrollTop();
            if (imagePos < topOfWindow + 400) {
                $(this).addClass("slideLeft");
            }
        });
       // ... must 28
    });

最佳答案

我会使用:

$(window).scroll(function () {
    var topOfWindow = $(window).scrollTop();

    function _checkOffset(className) {
        return function () {
            var $this = $(this),
                imagePos = $this.offset().top;

            $this.toggleClass(className, (imagePos < topOfWindow + 400));
        };
    }

    $('.regalos').each(_checkOffset('stretchLeft'));
    $('.sprite-Layer-2').each(_checkOffset('slideLeft'));
});

但是,您最好重新考虑您的结构,以避免根据偏移量添加不同的类名。

关于javascript - 简化功能,使代码不会变得太大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18602260/

相关文章:

jquery - 在其他 div 上滚动时更改引导导航类

javascript - KnockoutJS 与 jQuery Datatables 和绑定(bind)插件,行单击传递整个数组而不是单个模型

javascript - 如何从按钮中获取值?

javascript - 从 JavaScript 中的对象中提取数据

javascript - 如何动态地将相同的值分配给表中的匹配行

javascript - 当使用scaleX()显示/隐藏元素时,如何检查元素的可见性?

javascript - Jquery Ajax beforeSend 加载动画

javascript - Redux-thunk: `dispatch is not a function`

javascript - AngularJS:HTML 模板的继承

javascript - 保持建议框相对于输入字段