2012-07-25 123 views
0

在给定的场景中,我将如何将DOM对象分配给变量并调用它?在这个例子中,我试图获得“nav”元素的高度。现在它没有返回任何值,我想这是因为元素在文档准备好之前被调用。jQuery将DOM元素分配给对象

$(document).ready(function(){ 
    gbe.init(); 
}); 


var gbe = { 

    navigation : $("nav"), 

    init : function() { 
     gbe.nav.init(); 
    }, 

    nav  : { 

     init : function() { 
      navHeight : gbe.navigation.height(); 
      console.log(gbe.nav.init.navHeight, gbe.navigation.height()); 
     } 
    } 

}; 
+0

使用了'。 ready()',所以DOM准备就绪,因为它会得到... – 2012-07-25 21:47:16

回答

1

,如果你这样做是什么:

$(document).ready(function(){ 
    gbe.navigation = $("nav"); 
    gbe.init(); 
}); 
+0

是的,我使用HTML5标签“nav”,但它必须适用于任何所需的元素。 – sbay 2012-07-25 21:46:26

+0

完美,像魅力一样工作。谢谢! – sbay 2012-07-25 22:01:30

0

尝试把你的$(document)。就绪下面的定义GBE。只有console.log语句中的第二个条目才有效。

0
​$(document).ready(function() { 
    var $nav = $("nav"); 
    var height = $nav.height(); 
    console.log(height); 
});​ 

您是否正在尝试揭示模块模式?上面的代码是快速和肮脏的方式。

FIDDLE:http://jsfiddle.net/jhZSG/

0

恕我直言,你应该通过jQuery将元素(S)的初始化函数,并把它。就绪()这样的:

$(document).ready(function(){ 
    gbe.init($("nav")); 
}); 

var gbe = {  

    init : function(el) { 
     gbe.navigation : el, 
     gbe.nav.init(); 
    }, 

    nav  : { 

     init : function() { 
      navHeight : gbe.navigation.height(); 
      console.log(gbe.nav.init.navHeight, gbe.navigation.height()); 
     } 
    } 

};