Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于同一对象的其他特性设置特性值_Javascript_Jquery - Fatal编程技术网

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我发布了一个例子作为答案。