【问题标题】:Pass method parameter or option in plug-in在插件中传递方法参数或选项
【发布时间】:2016-02-03 08:00:05
【问题描述】:
    (function ( $ ) {
        $.fn.greenify = function( options ) {
            var settings = $.extend({
                color: "#556b2f"
            }, options );

            return this.css({color: settings.color});
        };
              //TODO another function here
       if ( action === "open") {
           alert("Open!");
        }

        if ( action === "close" ) {
           alert("lose!");
        }

    }( jQuery ));

`$( "div" ).greenify({color: "orange"});`//setting of options

我明白上面的代码设置了greenify插件的选项,但我也想调用显示函数。

如何在设置选项仍然可用于 greenify 的情况下实现这种用法:

`$( "div" ).greenify("open");` 

$( "div" ).greenify(open,{color: "orange"});

【问题讨论】:

    标签: jquery plugins jquery-plugins


    【解决方案1】:

    您只需检查options 是对象还是字符串

    $.fn.greenify = function(options) {
        if (typeof options === 'string') {
            if (options === 'open') {
                alert('open');
            } else if (options === 'close') {
                alert('close');
            }
        } else {
    
            var settings = $.extend({
                color: "#556b2f"
            }, options);
    
            return this.css({
                color: settings.color
            });
        }
    }
    

    【讨论】:

    • $( "div" ).greenify("open",{color: "orange"}); 呢?
    • 你见过接受类似东西的插件吗?
    • 或这样$( "div" ).greenify(open : {color: "orange"});
    • 嗯,当然,你可以传入任何东西,只要你抓住它,但是对于上面的代码,open 必须被定义?
    猜你喜欢
    • 1970-01-01
    • 2021-08-17
    • 2018-01-23
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多