1

我正在尝试使用我之前定义的 menuBar 对象对其中的对象进行操作。

var menuBar = $(".menu-bar ul");
var menuActive = menuBar.find("li.active");
menuBar.hover(function(){
    menuActive.toggleClass("active");
});
$('.menu-bar ul > li > a[href="'+ window.location.href +'"]').parent().addClass("active"); 

我不喜欢再次调用 DOM 搜索来定义链接父级的活动类。

关于如何使用 menuBar 变量的任何想法?

4

3 回答 3

3

您可能正在寻找:

menuBar.find('> li > a[href="'+ window.location.href +'"]').parent().addClass("active"); 

或者真的因为你试图选择父母:

menuBar.find('> li:has(> a[href="'+ window.location.href +'"])').addClass("active");

:has伪类允许您选择包含另一个元素的元素。这就是你想要的,你应该允许选择器本身做它可以做的任何优化。

于 2012-11-22T05:47:23.317 回答
1

您可以指定要在其中搜索的上下文:

$('li > a[href="'+ window.location.href +'"]', menuBar.children()).parent().addClass("active");

menuBar.children()将是上下文。

于 2012-11-22T05:47:21.213 回答
1

尝试这样的事情

var menuBar = $(".menu-bar ul");
var menuActive = menuBar.find("li.active");
menuBar.hover(function(){
    menuActive.toggleClass("active");
});
$('li > a[href="'+ window.location.href +'"]',menuBar).parent().addClass("active");
于 2012-11-22T05:48:37.337 回答