JQuery - 解析类然后使用if语句修改一个

时间:2009-08-17 03:21:57

标签: javascript jquery css arrays

我正在尝试仅在当前页面等于该链接时才将类应用于链接。

我找到当前页面:

var pathname = window.location.pathname.split("/")[window.location.pathname.split("/").length - 1];

这会抓取页面的url并保存最后一个/之后的内容,在我的页面为'index.html'的情况下。

现在,我正在使用链接(带有display:block的锚标签),当你将鼠标悬停在它们上时会有背景颜色变化。

我的目标是当您访问链接所链接的页面时,让这些链接已经着色,就像它们被悬停一样。

所以我用过:

if (pathname == $(".linkclass").attr("href")){
    $(this).addClass("linkHover");
}

现在显然“this”修饰符不起作用,但是如何告诉它只将linkClass的哪个实例传递给if语句? (而不是.linkclass的每个实例,其中有多个)。

谢谢!

3 个答案:

答案 0 :(得分:5)

我明白了,但如果有人遇到类似的问题,我会回答。

我认为jquery可以使用它自己的选择引擎来处理比较,而不是if语句。起初我找了.equals或者什么东西,但我想出来了:

var pathname = window.location.pathname.split("/")[window.location.pathname.split("/").length - 1];
$(".linkClass[href='" +pathname+ "']").addClass("linkHover");

您可以在jquery选择器中使用变量,并针对属性进行选择,因此这非常有效。

答案 1 :(得分:1)

也许尝试这样的事情:

$("#a.linkClass").each(
    function() {
        if (pathname == $(".linkclass").attr("href")) {
            $(this).addClass("linkHover");
        }
    }
);

或类似的。我们的想法是选择所有菜单链接锚点,然后循环使用它们并使用each()函数执行测试。

答案 2 :(得分:1)

$("a.linkClass[href='" + pathname + "']").addClass("linkHover");

编辑:克里斯打败了我。提升他的。