2012-09-17 91 views
1

myFunc()綁定到文檔滾動,因此它將被調用很多。我想將這些HTML選擇存儲在一個var中,並將它們傳遞給函數。當我在下面運行我的示例時,出現控制檯錯誤Unable to get value of the property 'css': object is null or undefined將多個jQuery元素選擇器傳遞給函數

var a1 = $('#a1'); 
var a2 = $('#a2'); 

$(document).bind("scroll", function() { 
    setTimeout(myFunc, 1000, a1, a2); 
} 

function myFunc(a1, a2) { 
    a1.css('color', 'blue'); 
    a2.css('font-weight', 'bold'); 
} 

如何將多個存儲在變量中的jQuery選擇器傳遞給函數?

回答

5
$(document).bind("scroll", function() { 
    setTimeout(function() { 
     myFunc(a1, a2); 
    },1000); 
}); // close); 

function myFunc(a1, a2) { 
    a1.css('color', 'blue'); 
    a2.css('font-weight', 'bold'); 
} 
+0

不應該OP的代碼做同樣的事情(除了在舊的瀏覽器)? –

+0

這工作。雖然我曾嘗試過,但一定有錯字。 –

2

嘗試以下操作:

$(document).bind("scroll", function() { 
    setTimeout(function() { 
     myFunc(a1, a2); 
    }, 1000); 
}); // and close properly your function 
0

a1a2變量可以用#a1元素之前設置和#a2存在在頁面上(特別是如果這不是包裹在一個onload /就緒處理程序和腳本在標題中)。我會這樣設置,以確保在滾動事件發生時存在#a1#a2

var a1 = undefined; 
var a2 = undefined; 

$(document).bind("scroll", function() { 
    if(typeof(a1) === "undefined") { a1 = $("#a1");} //will only reset a1 if undefined 
    if(typeof(a2) === "undefined") {a2 = $("#a2");} 

    setTimeout(function(){myFunc(a1,a2)}, 1000); 
}); //don't forget your ')' 

function myFunc(a1, a2) { 
    a1.css('color', 'blue'); 
    a2.css('font-weight', 'bold'); 
} 
0

您還可以將您的元素的數組裏面:

jsBin demo

var a1 = ['#a1','#a2']; 

$(document).bind("scroll", function() { 
    setTimeout(function() { 
     myFunc(a1); 
    }, 1000); 
}); 

function myFunc(el) { 
    $(el[0]).css('color', 'blue'); 
    $(el[1]).css('font-weight', 'bold'); 
} 
相關問題