0

重複の可能性:
この種のコードをどのように変更しますか?

これらの変数をjQueryを介してオプションに渡すには、ユーザーがプラグインを使用するときに、次のようにHTMLからプラグインを初期化する必要があります。

 <script>
    $('.elem').pluginName({
       theme: 'blue',
       animSpeed: 200
    });
 </script>

これが私のjQueryコードです。かなり厄介ですが、見てください。変数をオプションに変更するにはどうすればよいですか?

$(function () {

    var theme = "sunburst";
    var btnColor = "yellow";
    var icon = "power";
    var message = "Hello World";
    var animSpeed = 300;
    var animType = 'fadeIn';
    var btnText = "Purchase";
    var btnLink = 'http://www.google.com';
    var closeStyle = "dark";

    var content =
        '<div id="mn_close" class="' + closeStyle + '"></div>' +
        '<div id="mn_border"></div>' +
        '<i class="icon-' + icon + '"></i>' +
        '<span class="mn_message">' + message + '</span>';
        //  '<a href="' + btnLink + '" class="button ' + btnColor + '">' + btnText + '</a>';


    $("#mn_close").live("click", function () {
        $('.mn_bar').animate({
            height: '0'
        }, animSpeed, function () {});
    });
    var mn_bar = $(".mn_bar");
    mn_bar.append(content);
    $(function () {
        mn_bar.addClass("animated");
        mn_bar.addClass(animType);
        mn_bar.addClass(theme)
    });
});

またはここにjsfiddleがあります。http://jsfiddle.net/LwGRV/6/

この標準タイプのjQueryコードにもコードを実装しようとしていますが、マージに失敗しています。

;(function ( $, window, document, undefined ) {
    var pluginName = "defaultPluginName",
        defaults = {
            propertyName: "value"
        };

    function Plugin( element, options ) {
        this.element = element;

        this.options = $.extend( {}, defaults, options );

        this._defaults = defaults;
        this._name = pluginName;

        this.init();
    }

    Plugin.prototype = {

        init: function() {
        },

        yourOtherFunction: function(el, options) {
            // some logic
        }
    };

    $.fn[pluginName] = function ( options ) {
        return this.each(function () {
            if (!$.data(this, "plugin_" + pluginName)) {
                $.data(this, "plugin_" + pluginName, new Plugin( this, options ));
            }
        });
    };

})( jQuery, window, document );

誰かがこれに光を当てることができれば、事前に感謝します。

4

1 に答える 1

4

これを確認する必要があります:http ://api.jquery.com/jQuery.extend/ 変数はオブジェクト内に格納する必要があります。

于 2012-12-28T17:10:54.580 に答える