jQuery可以执行if语句吗?

时间:2011-01-04 20:58:06

标签: javascript jquery addclass

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 个答案:

答案 0 :(得分: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.
  }
});

答案 1 :(得分:2)

只是对这个存在做出正确的if陈述?

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

答案 2 :(得分:2)

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

你可以像这样使用它:

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

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

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

答案 3 :(得分:2)

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

例如,你有这个jquery对象

var firstObj = $(".selector1")

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

".selector2"

然后您可以使用is,如下所示

firstObj.is(".selector2")

如果任何元素适合,则响应将为“true”,否则为“false”。 所以你可以结合javascript的if如下

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

希望有所帮助