为了账号安全,请及时绑定邮箱和手机立即绑定

这段代码怎么封装好?

这段代码怎么封装好?

一只甜甜圈 2018-09-07 10:10:48
实现的功能是:1.页面下拉时固定nav问题是两个栏目后端是分离成组件并且公用的(smarty)!结构和公用是很大的限制,还有代码冗余,这段代码如何分装比较好,变化的参数写进smartFloat_nav();smartFloat_header();其中方法里面?
查看完整描述

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

比较了一下你的代码,两段代码只有这么一点不一样

https://img1.sycdn.imooc.com//5baf12e70001b92d10250603.jpg

所以可以封装成一个函数,最多只是 smartFloat_nav 和 smartFloat_mall 调用不同。

共用部分不想暴露出来可以写成闭包

(function() {

    function smartFloat(position1, position2) {

        var position = function(element) {

            var top = element.position().top;

            var left = element.position().left;

            pos = element.css("position");

            $(window).scroll(function() {

                var scrolls = $(this).scrollTop();

                if (scrolls >= top) {

                    if (window.XMLHttpRequest) {

                        element.css({

                            position: "fixed",

                            top: position1,

                            left: left

                        });

                    } else {

                        element.css({

                            top: scrolls,

                            left: left

                        });

                    }

                } else {

                    element.css({

                        position: "absolute",

                        top: position2,

                        left: 0,

                    });

                }

            });

        };

        return $(this).each(function() {

            position($(this));

        });

    }


    $.fn.smartFloat_mall = function() {

        smartFloat("0.81rem", "2.32rem");

    };

    $.fn.smartFloat_nav = function() {

        smartFloat("1.81rem", "2.32rem");

    };

})();


查看完整回答
反对 回复 2018-09-29
  • 1 回答
  • 0 关注
  • 671 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信