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')
}); });
应该是一种工作方式......
答案 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对象适合另一个表达式。
var firstObj = $(".selector1")
并且您想测试任何元素是否适合此表达式
".selector2"
然后您可以使用is
,如下所示
firstObj.is(".selector2")
如果任何元素适合,则响应将为“true”,否则为“false”。
所以你可以结合javascript的if
如下
if (firstObj.is(".selector2")){
// you can do something here
}
希望有所帮助