2016-11-03 8 views
0

私のスクリプトでは、autoHide: trueのような「もの」を読み込んで、スクリプト上に変数やその他のものを設定するにはどうしたらいいですか?私は彼らが何を正確に呼ばれているか分からないので、私はそれらを「もの」と呼んでいます。知識の不足のためにおそらく何千もの資源があることを意味しています。スクリプトへのフィールドの受け渡し

私はscrollbarWidth,themeなどの複数のオプションを持ちたいと思いますが、私のファイルでそれらを読み取る方法はまだ分かっていません。私は少し迷っています!

私は現在、実際に働いているスクリプトのライブデモンストレーションhereを持っています。

(function(jQuery, undefined) { 
    "use strict"; 
    jQuery.fn.extend({ 
     BananzaScroll: function() { 

     // Script Functions Here 

     } 
    }); 
})(jQuery); 


$("#demo").BananzaScroll({ 
    autoHide: true 
}); 
+0

オブジェクトは 'BananzaScroll'関数にパラメータとして渡されます。私はプラグインの作成に関するjQueryガイドを読むことをお勧めします:https://learn.jquery.com/plugins/basic-plugin-creation/ –

+1

あなたが参照する 'もの'は 'オブジェクト'(別名ハッシュ)の 'キー' '' '値のペアです。 – IMTheNachoMan

+1

@IMTheNachoManありがとうございました –

答えて

1

基本的にはグローバルスコープで設定しただけです。

<script> 
    var myValue = 'abc'; 
</script> 

(function ($) { 
    console.log(myValue); 
})($); 

あなたが値の多くを必要とするものを作成している場合は、それらを保持し、グローバルスコープでちょうどそれを置くためのオブジェクトを作成するのが最善だろう:

<script> 
    var myOptions = { 
     autoHide: false, 
     speed: 5, 
     scrollBarWidth: 10 
    }; 
</script> 

これは続けて地球規模のスコープがあまりにも汚染されることからまた、グローバルスコープ内の他のものとの衝突を避けるために、擬似名前空間にしたいと思うでしょう。

<script> 
    var myApplicationName_myData = {}; 
</script> 

あなたはjQueryプラグインをやっている場合は、あなたが実際にスクリプトにパラメータとして渡すことになるでしょう:

<script> 
    $('#id').myPlugin({ 
     autoHide: false 
    }); 
</script> 

$.fn.myPlugin = function (options) { 
    console.log(options.autoHide); 
}; 
+0

オプションがデフォルトオプションを置き換えるように設定されているかどうかを確認する簡単な方法はありますか? –

+0

すべてのデフォルトでオブジェクトを作成し、 'jQuery.extend'のようなものを使用すると、デフォルトでgiveオプションを適用できます。例えば、 'opts = $ .extend(defaults、opts)' – samanime

+0

これですべてのデフォルトを設定し、これを呼び出すと、設定されているものはすべて置き換えられますが、 'AutoHide:true/false'はどうでしょうか? true/falseにif文が必要ですか? –

2

はそうのように、BananzaScrollの定義に引数を渡します。 https://jsfiddle.net/80x1hLk1/:

(function(jQuery, undefined) { 
    "use strict"; 

    jQuery.fn.extend({ 
    BananzaScroll: function(opts) { 
     console.log(opts); // opts contains the object you pass in 
    } 
    }); 
})(jQuery); 

$('#demo').BananzaScroll({ 
    autoHide: true 
}); 

JSBin demo

関連する問題