你外面的定义它们功能。另外,因为load
在页面加载过程中发生得相当晚,所以您需要主动初始化它们,然后根据load
和resize
对其进行更新。这表明你想要一个可重复使用的功能:
var menuHeight; // Defining...
var contactHeight; // ...them
grabHeights(); // Proactive
$(window).on("load resize", grabHeights); // And on events
function grabHeights() {
if ($(window).width() < 768) {
menuHeight = '0px';
contactHeight = '100%';
}
else {
menuHeight = ($('#desktop-menu').height() + 'px').toString();
contactHeight = ($('.get-in-touch-home').outerHeight() + 'px').toString();
}
}
如果你的代码是不是已经在一个范围的功能,你可能希望把它放在一个:
(function() {
var menuHeight;
var contactHeight;
grabHeights();
$(window).on("load resize", grabHeights);
function grabHeights() {
if ($(window).width() < 768) {
menuHeight = '0px';
contactHeight = '100%';
}
else {
menuHeight = ($('#desktop-menu').height() + 'px').toString();
contactHeight = ($('.get-in-touch-home').outerHeight() + 'px').toString();
}
}
})();
...因为全局是一坏事™。 :-)
你会看到别人告诉你先走一步,挂钩事件,然后手动触发它:
$("selector").on("event", function() {
// ...
}).triger("event");
我不是一个球迷。如果你需要调用一个函数,只需调用它。
如果你还没有在某个地方声明'menuHeight'和'contactHeight',那么这个代码就会陷入[隐式全局的恐怖](http://blog.niftysnippets.org/2008/03/horror-of- implicit-globals.html)*(这是我贫血的小博客上的一篇文章)*。一定要声明你的变量。 :-) –