0

jQuery プラグインの変数を定義して、外部から表示できるようにする方法があるかどうか疑問に思っていました。(デバッグ用)

このプラグインを複数の DOM 要素で呼び出すことができるようにしたいので、各呼び出しは独自の変数セットを保持すると考えていました。

次のように Firebug で変数の値を確認したいと思っていました。

$('#hp-feat-promo').featuredPromo.moduleValues.totalNumSlides

しかし、それはうまくいきません。これがどのように機能するか、または私の理解が間違っていますか?

(function($){
$.fn.featuredPromo = function (options) {

    /* Inside a jQuery plugin this refers to the jQuery object
     * Inside of the nested function declarations, this refers to the local object, so if 
     * you still want to refer to the original DOM object, you need to hhave a pointer to the top-level this 
     */
    var self = this;

    /* Create some defaults, extending them with any options that were provided */
    var defaults = {
        targetElement: self.find('.window ul li'),
        isAuto: true
    },
    settings = '';

    /* settings is all the configurable parameters, defaults + options (overrides) */
    settings = $.extend(defaults, options);

    this.moduleValues = {
        totalNumSlides: settings.targetElement.length,
        autoRotate: settings.isAuto,
        currentSlide: 0,
        nextSlide: function() {
        },
        prevSlide: function() {
        }       
    };

    return this.each(function() {



    });
};


jQuery(function(){
    $('#hp-feat-promo').featuredPromo();
});
 })(jQuery);
4

2 に答える 2

0

私が望んでいることを達成するための最良の方法は、この記事の「軽量なスタート」で説明されていることを発見しました。 http://coding.smashingmagazine.com/2011/10/11/essential-jquery-plugin-patterns/

基本的に、変数を保持するクラスを作成し、プラグインを使用している HTML 要素の $.data() に追加します。

于 2012-10-26T14:30:11.607 に答える
0

グローバル変数、またはグローバルにアクセス可能なオブジェクト (jQuery など) のメンバーである変数を作成する必要があります。

/* inside plugin */
jQuery.debugMessage = this.moduleValues = {};

/* outside plugin */
console.log( jQuery.debugMessage );

または、プラグインで public getter 関数を設定することもできます。

console.log()しかし、関数内からのデバッグには使用できませんか?

于 2012-10-25T16:38:29.313 に答える