0

jQuery 可以执行“if”函数吗?例如,如果一个菜单项中存在一个类,则将该类应用于不同的菜单项?这与通常的活动页面菜单突出显示略有不同,因为我正在处理活动下拉菜单和子页面。

我想做的是

(the usual suspect) $(document).ready(function() {

如果...

$('#menu-main-menu li.menu-item-1061') "contains the classes
current-menu-ancestor current-menu-parent"

    then add those same classes to, i.e.:

    $('#menu-main-menu li.menu-item-1099').addClass('current-menu-ancestor
current-menu-parent')

}); });

应该是这种工作的一种方式....

4

4 回答 4

9

jQuery 不是一种语言,它是 JavaScript 的库。答案是:“是的,JavaScript 将if语句作为语言的一部分。”

我不明白你写的伪逻辑。“如果 [某些列表项] '包含类' [foo] [bar]”是什么意思?如果列表项同时具有这两个类?这些课程中的任何一个?或者如果列表项具有至少具有这些类之一的后代?或者如果列表项有一个或多个具有所有这些类的后代?

这是使用一种解释的解决方案:

jQuery(function($){
  var li = $('#menu-main-menu li.menu-item-1061');
  if ( li.find('.current-menu-ancestor, .current-menu-parent').length ){
    // do whatever you want here.
  }
});
于 2011-01-04T20:59:10.557 回答
2

if只是对这个的存在做出适当的陈述吗?

$('#menu-main-menu li.menu-item-1061.current-menu-ancestor.current-menu-parent')
于 2011-01-04T21:04:54.853 回答
2

正如所指出的,if它是 JavaScript 的构造,而不是 jQuery。我认为您正在寻找的是 jQuery 函数hasClass,它可以根据类的名称检查 DOM 元素,如果元素当前具有该类,它将返回 true。

你可以像这样使用它:

if (myElement.hasClass("myClass")) {
    // do something
}

if构造内部,您可以插入要将类添加到其他元素的代码。

更新:您的示例有点奇怪,因为您似乎想问“与此选择器匹配的一组元素是否具有类current-menu-ancestorcurrent-menu-parent?” 这很奇怪,因为您正在匹配一元素(您最具体的选择器是一个类,因此可能返回多个项目)。似乎您的 HTML/CSS 中可能存在设计错误,因为该类menu-item-1061听起来应该是一个 ID(它是唯一的),而不是一个类。无论哪种方式,该hasClass函数仍然适用于您,因为true如果任何匹配的元素具有该类,它就会返回。

于 2011-01-04T21:16:29.103 回答
2

Javascript 可以执行if语句,但在 jQuery 中,您可以使用is函数来确定是否有任何 jquery 对象适合另一个表达式。

例如,你有这个 jquery 对象

var firstObj = $(".selector1")

并且您想测试是否有任何元素适合此表达式

".selector2"

那么你可以使用is如下

firstObj.is(".selector2")

如果任何元素适合,则响应将为“真”,否则为“假”。所以你可以结合javascriptif如下

if (firstObj.is(".selector2")){
    // you can do something here
}

希望能帮助到你

于 2011-01-04T21:21:19.627 回答