0

私はinitメソッドを持つjQueryオブジェクトをたくさん持っているので、今はこのようなものがあります

$.myobject1.init(somevar);
$.myobject2.init(somevar); 
$.myobject3.init(somevar);
$.myobject4.init(somevar);
$.myobject5.init(somevar); // somevar is the same var in all the calls

しかし、私はこのコードを単純化する方法を探しています。

var objectName = "myobject1"; // or any other object name
$. objectName .init(somevar);

助けてくれてありがとう!:-)

4

4 に答える 4

1

使うだけ

$[objectName].init(somevar);
于 2013-10-08T14:32:24.207 に答える
1

Since they are already jQuery objects you don't need $. and you can use .add() like this :

var object = myobject1.add(myobject2).add(myobject3).add(myobject4).add(myobject5);
object.init(somvar)
于 2013-10-08T14:30:45.113 に答える
0

JavaScript では、すべてのオブジェクトがマップです。それは本当に奇妙ですが、次のトリックを実行できることを意味します。

var p = "mypropertyname";
var obj = {};
obj[p] = somevalue;

その場合、次のようにします。

console.log(obj.mypropertyname)

あなたが得るでしょう:

> somevalue
于 2013-10-08T14:32:15.080 に答える
0

オブジェクトの名前をループしたい場合は、文字列をドット表記と組み合わせることはできないことを知っておく必要があります。

var someObj = {
    subObj: {
        a: 5
    }
};

someObj.subObj.a === 5;       // true
someObj."subObj".a === 5;     // throws error

ただし、角括弧表記で文字列を使用できます。

someObj["subObj"].a === 5;       // true

var propName = "subObj";

someObj[propName].a === 5;       // true

したがって、それを使用して for ループでオブジェクト名をループするか、他の回答で提案されているように jQuery メソッドを使用できます。

于 2013-10-08T14:37:42.377 に答える