2014-03-24 52 views
0

我想了解location.hash如何在jQuery中工作,爲此,我試圖從最基本的形式開始,然後一旦我得到這個權利,我會更深入,但悲傷地我已經堅持我認爲應該是一件簡單的事情。哈希位置的基礎

這裏是我的代碼創建修改別人的代碼,我在一個帖子在這裏找到:

$(document).ready(function(){ 

$("body").css("background-color", "#FF0"); 

$(window).bind('hashchange', function(event) { 

    if (window.location.hash == "red"){ 
     $("body").addClass("red"); 
    } else if (window.location.hash == "green") { 
     $("body").addClass("green"); 
    } 

    event.preventDefault(); 

}); 

$(window).trigger("hashchange"); 

});

而這裏的頁面http://dlacrem.16mb.com/dlatest/hash.html

現在,正如我所說,我想學習,這樣有可能是80次失誤10行:d,但是,不應該將它添加紅色類的身體當我去hash.html#紅色?

我使用BBQ plugin by Ben Alman

的問候,並感謝該來我的方式幫助!

+0

你可能需要測試'window.location.hash.substr(1)== 「紅」'刪除前導''#... – Blazemonger

回答

2

window.location.hash包含散列符號。

if (window.location.hash == "#red"){ 
    $("body").addClass("red"); 
} else if (window.location.hash == "#green") { 
    $("body").addClass("green"); 
} 

此外,您設置,使身體黃色將覆蓋任何你用類做(除非你使用!重要的,但不這樣做!)你的直列式的,所以你要使其在樣式表中變爲黃色而不是內聯。

http://jsfiddle.net/4SwnQ/

你但是請注意,一旦你把它的紅色,綠色,然後,它保持綠色。這是因爲你從來沒有真正移除類,所以它具有最高特異性(在這種情況下是綠色,因爲它是樣式表中的最後一個)。爲了解決這個問題,你還需要刪除其他類。

http://jsfiddle.net/4SwnQ/1/

+0

除非你用'!important',這你真的不應該。 – Blazemonger

+0

不*任何東西*,只是大部分東西;) – CodingIntrigue

+1

呃,真的。使用'!重要'的錯誤想法,我不認爲它是一個選項! –