2012-02-10 8 views
0

私はいくつかのユーザー定義変数でjQueryプラグインを開発中です。だから、基本的に私は、資本または小文字の両方のためのbarのエイリアスを作成できるようにする必要があり配列内の変数のエイリアスを作成する方法は?

// notice how I've capitalized 'bar' as the variable name 
$(document).fooBar({foo: [{Bar: 'Bar'}]});​ // DOES NOT WORK 

// and 
$(document).fooBar({foo: [{bar: 'bar'}]}); // WORKS 

を次のように

(function ($) { 
    var defaults = { 
     foo: [{bar: 'bar'}] 
    } 

    $.fn.fooBar = function (config) { 
     var settings = $.extend({}, defaults, config); 

     $.each(settings.foo, function(key, value){ 
      console.log(value.bar); // prints 'bar' 
     }); 
    }; 
})(jQuery); 

は今、私はこれを呼び出すことができるようにしたいと思います。どうすればJavascriptでこれを達成できますか?

+0

'settings.foo'はオブジェクトではなく配列です(' settings.foo.bar'は動作しません)。渡されたオブジェクトが 'settings.foo'にセット(またはコピー)されるようにしますか? –

+0

いいえ、申し訳ありません...私の間違い。私は 'settings.foo.bar'を呼び出すことができる必要がありますが、エンドユーザは質問で示した両方の例を使用できる必要があります。混乱のために申し訳ありません、私はこのjavascriptのもののいくつかにかなり新しいです。 –

+0

'$ .extend'は' defaults.foo'を 'config.foo'に置き換えます。 'settings'を設定するためにあなた自身のループを作る必要があるかもしれません。 –

答えて

1

これはそれについて移動する正しい方法であるが、ここで私が達成した方法ですかどうかわからないものをI必要。

(function ($) { 
    var defaults = { 
     foo: [{bar: 'system bar'}] 
    } 

    $.fn.fooBar = function (config) { 
     var settings = $.extend({}, defaults, config); 

     $.each(settings.foo, function(key, value){ 
      // A quick check to see if the user is using capital letters 
      // or lower case letters. We can be flexable as long as they're 
      // being consistent. 
      if (typeof this.Bar !== 'undefined') { 
       this.bar = this.Bar; 
      } 
      console.log(value.bar); // prints 'user Bar' 
     }); 
    }; 
})(jQuery); 



$(document).fooBar({foo: 
    [ 
     { bar: 'lower user bar'}, 
     { Bar: 'UPPER user Bar'} 
    ] 
}); 
+0

したがって、 'settings.foo'はオブジェクトの配列ですか?では、本当に '$ .each'が必要ですか? 'settings.foo'は配列の中にもっと多くの要素を持っていますか?あなたは 'settings.foo [0] .bar'を実行することができませんでした(' settings.foo [1] 'がありますか?) –

+1

はい、それは配列です。私はBing Mapsと一緒に作業しています。マップのピンをマップ上にドロップします。 1本または10本のピンがあります。 '{mapPins:{{lat:1、lon:1}、{lat:1.1、lon:1.1}}}' –

+1

と、最初の文字の大文字と小文字を区別したくない理由は、javascriptの標準では小文字、VB.Net標準(どこからデータをシリアライズするか)には大文字のプロパティが必要です。 {{緯度:1、緯度:1}、{緯度:1.1、緯度​​:1.1}}} '{地図ピン:これは必須ではないことは分かっていますが、私にとっては良い学習体験です。 –

0

コンフィグマップのキーケースを正規化し、よりもむしろ1が渡されたことをオフに拡張します。

関連する問題