我有一个功能可以做这样的事情:
function my_function() {
if ($('#footer').outerHeight() > 100) {
$('#footer').height(...) ;
$('#footer').css(....) ;
}
每次滚动时都会调用该函数,所以我想知道这样做 $('#footer') 这么多次是否有那么糟糕。如果是这样,解决这个问题的好方法是什么?
我有一个功能可以做这样的事情:
function my_function() {
if ($('#footer').outerHeight() > 100) {
$('#footer').height(...) ;
$('#footer').css(....) ;
}
每次滚动时都会调用该函数,所以我想知道这样做 $('#footer') 这么多次是否有那么糟糕。如果是这样,解决这个问题的好方法是什么?
您应该像这样链接您的函数并缓存您的选择器:
function my_function() {
var footer = $('#footer');
if (footer.outerHeight() > 100) {
footer.height(...).css(....);
}
}
您甚至可以移动函数的var footer = $('#footer');
外部使其成为全局函数以进一步改进它。
另一种选择是使用with
语句,但不推荐:
function my_function() {
with ($("#footer")) {
if (outerHeight() > 100) {
height(...).css(...);
}
}
}
其他答案很好,但是如果您根本不想评估 if 语句(第一次之后),请尝试以下操作:
var $footer;
var footerEvaled = false;
function my_function() {
if(footerEvaled == false)
{
$footer = $footer || $('#footer');
if ( $footer.outerHeight() > 100) {
$footer.height(...) ;
$footer.css(....) ;
footerEvaled = true;
}
}
}
你可以这样做:
var $footer;
function my_function() {
$footer = $footer || $('#footer');
if ($footer.outerHeight() > 100) {
$footer.height(...) ;
$footer.css(....) ;
}
}
您可以在函数之前将 $('#footer') 存储在变量中。例如:
var footerHTML = $('#footer');
function my_function() {
if ( footerHTML.outerHeight() > 100) {
footerHTML.height(...) ;
footerHTML.css(....) ;
}
这将避免为同一元素创建多个 JQuery 实例。