Javascript 基于同一对象的其他特性设置特性值
这是我的密码Javascript 基于同一对象的其他特性设置特性值,javascript,jquery,Javascript,Jquery,这是我的密码 var myApp = { nav : $('#top_nav .nav'), primary_navs : $('#top_nav .nav').find('> li'), secondary_navs : $('#top_nav .nav').find('> li').find('.secondary > li') } 这是可行的,但我不希望反复重复jquery选择器函数。我想做,
var myApp = {
nav : $('#top_nav .nav'),
primary_navs : $('#top_nav .nav').find('> li'),
secondary_navs : $('#top_nav .nav').find('> li').find('.secondary > li')
}
这是可行的,但我不希望反复重复jquery选择器函数。我想做,
primary_navs : nav.find('> li')
但这给了我“导航未定义”。我试过myApp.nav
,也试过this
,但显然两者都没有达到我认为应该达到的效果。定义同一对象的新属性时,如何引用对象的属性?缓存变量
var $nav = $('#top_nav .nav');
然后您可以在代码中多次使用它
var $nav = $('#top_nav .nav'),
$childrenLi = $nav.children('li');
var myApp = {
nav : $nav ,
primary_navs : $childrenLi ,
secondary_navs : $childrenLi.find('.secondary > li')
}
您还可以使用子项
获取直接子项
$('top#u nav.nav')。查找('>li')
与$('top#u nav.nav')相同。子项('li')
缓存变量
var $nav = $('#top_nav .nav');
然后您可以在代码中多次使用它
var $nav = $('#top_nav .nav'),
$childrenLi = $nav.children('li');
var myApp = {
nav : $nav ,
primary_navs : $childrenLi ,
secondary_navs : $childrenLi.find('.secondary > li')
}
您还可以使用子项
获取直接子项
$('top_nav.nav')。查找('>li')
与$('top_nav.nav')相同。子项('li')
您可以将其封装到执行并返回对象的匿名函数中:
var myApp = (function($nav) {
return {
nav: $nav,
primary_navs: $nav.find('> li'),
secondary_navs: $nav.find('> li').find('.secondary > li')
};
}($('#top_nav .nav')));
您可以将其封装到执行并返回对象的匿名函数中:
var myApp = (function($nav) {
return {
nav: $nav,
primary_navs: $nav.find('> li'),
secondary_navs: $nav.find('> li').find('.secondary > li')
};
}($('#top_nav .nav')));
声明对象时的所有语句将同时求值,因此一秒钟内不能使用上一个属性的结果。但是,您可以将MyApp设置为等于一个函数,该函数立即求值并返回一个对象 比如说
var myApp = function() {
var $nav, $primary_navs;
var $nav = $('#top_nav .nav');
var $primary_navs = $nav.find('> li');
return {
nav: $nav,
primary_navs: $primary_navs,
secondary_navs = $primary_navs.find('.secondary > li')
}
}();
声明对象时的所有语句将同时求值,因此一秒钟内不能使用上一个属性的结果。但是,您可以将MyApp设置为等于一个函数,该函数立即求值并返回一个对象 比如说
var myApp = function() {
var $nav, $primary_navs;
var $nav = $('#top_nav .nav');
var $primary_navs = $nav.find('> li');
return {
nav: $nav,
primary_navs: $primary_navs,
secondary_navs = $primary_navs.find('.secondary > li')
}
}();
您可以使用带有匿名函数的
new
创建对象:
var myApp = new function(){
this.nav = $('#top_nav .nav');
this.primary_navs = this.nav.children('li');
this.secondary_navs = this.primary_navs.find('.secondary > li')
};
您可以使用带有匿名函数的
new
创建对象:
var myApp = new function(){
this.nav = $('#top_nav .nav');
this.primary_navs = this.nav.children('li');
this.secondary_navs = this.primary_navs.find('.secondary > li')
};
使用返回object@jac你的意思是什么?如果你知道通往孩子们的道路,比如“李”,那么最好不要“找到他们”。直接引用它们可以节省性能。@MuhammadUmer我发布了一个示例作为答案。使用一个返回object@jac你的意思是什么?如果你知道通往孩子们的道路,比如“李”,那么最好不要“找到他们”。直接引用它们可以节省性能。@MuhammadUmer我发布了一个例子作为答案。