• 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相关属性没有定义.

  • 相关阅读:
    代理模式
    windows服务
    Log4Net配置日志
    PLSql的使用
    母版页与部分视图
    Core Mvc传值ViewData、ViewBag和return view(model)
    IActionResult的返回类型
    Core Mvc传值Query、Form、Cookies、Session、TempData、Cache
    .Net Core 配置文件appsettings
    享元模式
  • 原文地址:https://www.cnblogs.com/DomoYao/p/Jquery.html
Copyright © 2020-2023  润新知