Selectorルックアップの数を最小限に抑える方法を見つけようとしています。私の問題は、ベース$(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をアニメーション化するために行われます。はい、それは欠けているものです、はい、それは意味をなさないかもしれません。これは単なる例であり、実際のアプリケーションではありません。
私は、この例がパフォーマンスにとってまだ些細なことであることを理解しています。その事実を無視してください。これを実現する方法を知りたいだけで、それがベストプラクティスなのかパフォーマンスなのかについてのレッスンではありません。みんなありがとう。