我試圖找到一種方法來最小化選擇器查找的數量。我的問題是,我有一個基於$(document).ready()定義的變量,它需要在$(document).ready()中嵌套的函數內更新。
考慮這個例子(編輯:我更新了它更多解釋)
<script>
//var $current_page = $home_page; **<--I DONT want to do this, going global
and of course it doesn't work since
$home_page isn't defined yet.**
$(document).ready(function() {
var $home_page = $("#home-page");
var $portfolio_page = $("#portfolio-page");
var $about_page = $("#about-page");
var $current_page = $home_page; // **<--This variable, in this scope level,
// is what I want updated**
$("#home-btn").click(function() {
$current_page.stop()
$current_page.show()
$current_page.animate({
duration: 360,
easing: 'easeInCirc',
complete: function() {
$(this).css({ top: -700 });
}
);
$current_page = $home_page;
});
$("#portfolio-btn").click(function() {
$current_page.stop()
$current_page.show()
$current_page.animate({
duration: 360,
easing: 'easeInCirc',
complete: function() {
$(this).css({ top: -700 });
}
);
$current_page = $portfolio_page; //<--This needs to somehow update the
// variable in the $(document).ready
// scope, but not global**
});
});
<script>
如何更新變量$ CURRENT_PAGE 沒有使其成爲一個全局變量?
編輯: 這是爲了當你點擊一個菜單項時動畫出當前頁面div。是的,它缺少的東西,是的,它可能沒有意義。這只是一個例子,而不是實際的應用。
我明白這個例子對性能來說還是微不足道的,只是忽略了這個事實。我只想知道如何做到這一點,而不是教訓它是最佳做法還是表現。多謝你們。
您能向我們展示您遇到性能問題的例子嗎? ID選擇器查找是最快的,如果遇到性能問題,查看特定瓶頸可能比嘗試在選擇器級別進行微優化更好。 – 2010-07-01 15:53:15
你當前的代碼沒有發生什麼?你的例子在方法中改變了它......但是在'click'處理程序被附加之前它已經被設置爲這個。你想重新運行選擇器來尋找新的元素或什麼? – 2010-07-01 15:59:33
您的代碼正在更新$ current_page。我不明白你的問題。 你想做什麼? – jantimon 2010-07-01 16:11:52