哈希位置基础知识

时间:2014-03-24 14:47:48

标签: jquery hash location hashchange jquery-bbq

我正在尝试理解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

现在,正如我所说的,我正在努力学习,所以10行中可能有80个错误:但是,当我去hash.html#red时,不应该把红色类加到身上吗?

我正在使用BBQ plugin by Ben Alman

关心并感谢我的任何帮助!

1 个答案:

答案 0 :(得分: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/