1

私が書いているプラ​​グインでは、開発者はオプションを指定できます。オプションは、次のように保存および参照します。

(function( $, window) {
    $.widget("mobile.plug", $.mobile.widget, {
        options: {
            menuWidth: '25%',
            middleWidth: '25%',
            mainWidth: '25%'
            },
         some: function(){
            var self = this,
                o = self.options;

            console.log( o.menuWidth );
            }
     })
}) (jQuery,this);

私の質問
3つの要素(メイン、メニュー、中央)をすべてループして、それぞれのオプション値を取得したい場合、可能であれば、 o。[elem] Widthを動的に作成するにはどうすればよいですか?

これは機能しません(エラー:.operatorの後に名前がありません):

// this selects panels with jqmData(panel="mid|menu|main")
var elems = $('selector');

for (var i = 0; i<elems.length; i++){
   var el = elems.eq(i);
   console.log( o.[el.jqmData("panel")]Width );
   }
4

3 に答える 3

4

「幅」を「パネル」の結果に連結できるはずです。

o[el.jqmData("panel") + "Width"]

たとえば、el.jqmData("panel")が「メニュー」の場合は、を取得しo["menuWidth"]ます。

于 2012-06-15T12:53:36.487 に答える
3

オブジェクトメンバー演算子の両方の形式を使用しようとしているため、エラーが発生します。

2つの形式は...

  • obj.propertyName ドット表記

  • obj["propertyName"] ブラケット表記

あなたは持っています.[...] (両方を使用しています。ドットは名前がそれに続くことを期待しています)

必要です[...] (前にドットはありません)

次に、文字列の連結を行って追加します"Width"

o[el.jqmData("panel") + "Width"]
于 2012-06-15T12:55:52.677 に答える
3

あなたが探しているのは、文字列で囲まれた表記です。

for (var i = 0; i<elems.length; i++){
   var el = elems.eq(i);
   console.log( o[el.jqmData("panel") + "Width"] );
   }

...、、などをel.jqmData("panel")返す"mid"と仮定します。"menu"

JavaScriptでは、ドット付き表記とリテラル(obj.foo)、または括弧で囲まれた表記と文字列(obj["foo"])のいずれかを使用してプロパティを参照できます。後者の場合、リテラル文字列である必要はなく、式の結果である可能性があります。

于 2012-06-15T12:55:59.917 に答える