对象文字内的jquery对象

时间:2009-11-15 19:05:36

标签: javascript jquery object

我试图不重复选择器并通过相同的对象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)。
  3. 我试图将所有这些变量放在一个名为testimonialsBelt的对象中。我知道我可以用松散的javaScript做到这一点。 感谢

2 个答案:

答案 0 :(得分:0)

在对象文字中,您只能使用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(),则需要使用我的第一个示例。

答案 1 :(得分:-1)

在JavaScript(不是ECMAScript)中,你可以使用它:

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