我试图不重复选择器并通过相同的对象parentElment
声明变量来获取它的子项。
我试过了:
testimonialsBelt={
parentElment:$(".testimonialsCntnr ul"),
childrenElem:this.parentElment.children().length
}
我也尝试过:
testimonialsBelt={
parentElment:$(".testimonialsCntnr ul"),
childrenElem:$("testimonialsBelt.parentElment").children().length
}
但是在致电undefined
时我会继续alert(testimonialsBelt.childrenElem)
。
this
,何时必须使用完整路径? (在这种情况下为testimonialsBelt.parentElment
)。我试图将所有这些变量放在一个名为testimonialsBelt的对象中。我知道我可以用松散的javaScript做到这一点。 感谢
答案 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
}