JQuery объект внутри литерала объекта - PullRequest
0 голосов
/ 15 ноября 2009

я пытаюсь не повторять селектор и не получать его потомки через те же объекты parentElment объявленная переменная.

Я пытался:

testimonialsBelt={
    parentElment:$(".testimonialsCntnr ul"),
    childrenElem:this.parentElment.children().length
}

Я тоже пробовал:

testimonialsBelt={
    parentElment:$(".testimonialsCntnr ul"),
    childrenElem:$("testimonialsBelt.parentElment").children().length
}

но я продолжаю получать undefined при звонке alert(testimonialsBelt.childrenElem).

  1. есть ли способ получить объект jquery с объектными литералами?

  2. Какое правило? когда я могу использовать this и когда у меня должен быть полный путь? (в данном случае testimonialsBelt.parentElment).

Я пытаюсь поместить все эти переменные в один объект, называемый testimonialsBelt. я знаю, что могу сделать это с помощью свободного javaScript. Спасибо

Ответы [ 2 ]

0 голосов
/ 15 ноября 2009

В JavaScript (не ECMAScript) вы можете использовать это:

testimonialsBelt={
        parentElment:#1=$(".testimonialsCntnr ul"),
        childrenElem:#1#.children().length
}
0 голосов
/ 15 ноября 2009

В литералах объекта вы можете использовать this только для ссылки на объект, который вы объявляете внутри функции. Попробуйте следующее:

var testimonialsBelt = {
    parentElment: $(".testimonialsCntnr ul"),
    childrenElem: function() {
        return this.parentElment.children().length;
    }
};

Разница в вызове childrenElem заключается в том, что вместо использования alert(testimonialsBelt.childrenElem) вместо него будет alert(testimonialsBelt.childrenElem()).

В противном случае this относится к текущей области видимости, в которой вы находитесь (обычно это окно, если вы объявляете литерал объекта как глобальный).

Обращаясь к вашему редактированию: я не уверен, что вы подразумеваете под "свободным javascript", но я предполагаю, что вы имеете в виду как можно более простой. В этом случае вы можете попробовать следующее, хотя я не большой поклонник этого метода. Это более многословно, но легко понять.

var testimonialsBelt = {
    parentElment: $(".testimonialsCntnr ul")
};
testimonialsBelt.childrenElem = parentElment.children().length;

Это дает вам объект, где childrenElem является статическим (он не изменяется) и избегает вызова $(".testimonialsCntnr ul") дважды. Однако, если вы ожидаете, что $(".testimonialsCntnr ul").children() изменится, вам нужно будет использовать мой первый пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...