3

当 URL 包含目录路径时,尝试将 CSS 类添加到父项。

例如,如果我的网址是

example.com/directory/about.html

我想在我的顶部导航中添加一个 CSS 类,如果它包含/directory/在其中。

所以在这种情况下,example.com/directory/overview.html会得到一个 CSS 类“ active-parent

这将是.main-nav li a.active-parent

(请注意,我已经在使用 jquery 来检查 URL 并使该页面处于活动状态,但是当它是一个部分的子页面时,父页面没有突出显示)

我以为我可以使用:contains() Selector但我不知道如何将它应用到 URL

4

3 回答 3

1

jQuery 选择器不能用于 url。您必须自己解析 url 并检查内容。

if (window.location.href.indexOf('/directory/') != -1) {
    // Add a css class to a html element
}

您可能希望使用更通用的方式使用 split 函数:

window.location.pathname.split('/').forEach(function(directory) {
    if (directory == 'directory') {
        // Add a css class to a html element
    }
});
于 2012-12-03T15:38:56.470 回答
0

I f I understand you correctly, you want to filter through a group of urls and then, based on text within the href, you want to manipulate data. In that case, use the .filter() function like so:

$("a").filter(function(i) { return $(this).attr("href").indexOf("document") > -1; })

This Grabs ALL A tag elements, filters them using the function inside to determine if the href has "document" in it or not. Then simply use the .each() function to do whatever, like so:

$("a")
    .filter(function(i) { return this.href.indexOf("document") > -1; })
    .each(function(i) {
        $(this).parent().addClass("some-class-name");
    });

See jsFiddle Example

If you need more understanding, just comment.

于 2012-12-03T15:45:05.020 回答
0

基于有限的信息,我建议:

$('a').filter(
    function(){
        return this.href.match(/(\/\w+\/)/);
    }).parent().addClass('parent');

这假设如果href包含任何目录,而不是简单地名为“目录”的特定目录,则添加该类。

参考:

于 2012-12-03T15:45:59.060 回答