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

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

我正在使用Ben Alman 的 BBQ 插件

问候,并感谢我提供的任何帮助!

4

1 回答 1

2

window.location.hash 包括哈希符号。

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

此外,您设置为使主体黄色的内联样式将覆盖您对类所做的任何事情(除非您使用!important,但不要这样做!),因此您需要在样式表中将其设为黄色而不是内联。

http://jsfiddle.net/4SwnQ/

但是,您会注意到,一旦将其变为红色,然后变为绿色,它就会保持绿色。这是因为您从未真正删除类,因此它采用具有最高特异性的类(在这种情况下为绿色,因为它在样式表中是最后一个)。为了解决这个问题,您还需要删除另一个类。

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

于 2014-03-24T14:52:30.220 回答