2

私はこれをしたい場合があります:

var els = {
    div: $('div'),
    p: els.div.find('p'),
    span: els.p.find('span')
};

しかし、これは起こります:

console.log(els.div); // Works
console.log(els.p); // undefined

だから私は現在これをやっています:

var els = (function(){
    var div = $('div'),
        p = div.find('p'),
        span = p.find('span');
    return {
        div: div,
        p: p,
        span: span       
    }
}());

console.log(els.p); // Works now  

ドライヤーにする方法はありますか?それができるようになるためのコードの束のようです。

4

3 に答える 3

4

あなたはそれを段階的に構築することができます:

vars els = { div: $('div') };
els.p    = els.div.find('p');
els.span = els.p.find('span');

またはこのように:

vars els = { };
els.div  = $('div');
els.p    = els.div.find('p');
els.span = els.p.find('span');

それがあなたにより一貫しているように思われる場合。

于 2012-05-17T03:17:29.330 に答える
0

あなたはこのようなことをすることができるはずですよね?

var els = {
    div: $('div'),
    p: this.div.find('p'),
    span: this.p.find('span')
};

オブジェクト内ではthisなく、キーワードを使用しました。els

于 2012-05-17T03:14:06.147 に答える
0

これをさらに一歩進めるために、ファクトリパターンを使用してオブジェクトの作成を処理することができます。

function getChildElements(container, childTags) {
    var elements = {};

    // Default tags to find if none were specified.
    childTags = childTags || [ "p", "span" ];

    // Loop through the childTags and find them in the container
    childTags.forEach(function (tag) {
        elements[tag] = container.find(tag);
    });

    return elements;
}

クライアントは、このファクトリメソッドを使用して、次のように親から子要素を取得できます。

var els = getChildElements($("div"));
于 2012-05-17T06:52:24.650 に答える