zoukankan      html  css  js  c++  java
  • Jquery 插件开发公开属性顺序的影响.

    如下代码拷贝能正常运行.

    (function ($) {
        $.fn.DemoPlugin = function (options) {
            var opts;
            opts = $.extend({}, $.fn.DemoPlugin.defaults, options);
            return demoPlugin();
    
            function demoPlugin() {
                alert("Hello," + opts.msg);
                if (opts.onChanged) {
                    opts.onChanged();
                }
            }
        };
        
        $.fn.DemoPlugin.defaults = {
            msg: "World!",
            onChanged: ""
        };
    })(jQuery);

    web页面调用如下:

    <div><h2 onclick="clickMe()">快点击我</h2>
    </div>
    
    
    <script type="text/javascript">
        function clickMe() {
            $.fn.DemoPlugin.defaults.onChanged = function () {
                alert("这里是回调函数.");
            };
            
            $("div").DemoPlugin();
        }
    </script>

    页面正常运行:

    如果把Juqery 代码稍微调整顺序,代码一模一样如下

    (function ($) {
        $.fn.DemoPlugin.defaults = {
            msg: "World!",
            onChanged: ""
        };
        
        $.fn.DemoPlugin = function (options) {
            var opts;
            opts = $.extend({}, $.fn.DemoPlugin.defaults, options);
            return demoPlugin();
    
            function demoPlugin() {
                alert("Hello," + opts.msg);
                if (opts.onChanged) {
                    opts.onChanged();
                }
            }
        };
    })(jQuery);

    变化如下:

    错误异常提示如下:

    显示jquery插件中函数为定义等。

    最后分析为什么没有定义,原来$.fn.DemoPlugin.defaults如果在顺序在前面,$.fn.DemoPlugin此时还没有定义,所以导致$.fn.DemoPlugin.defaults相关属性没有定义.

  • 相关阅读:
    Linux用户和用户组管理
    Linux系统概述
    Linux LVM 配置
    linux too many open files 问题总结
    tidb初体验
    kafka配置内外网访问
    使用docker快速安装软件
    一次ssh不能登陆问题
    kubernetes集群证书更新
    istio之envoy常见术语及状态码
  • 原文地址:https://www.cnblogs.com/DomoYao/p/Jquery.html
Copyright © 2011-2022 走看看