【发布时间】:2010-07-08 15:11:38
【问题描述】:
确定一个对象是否具有一个类或另一个类的正确方法是什么? 以下似乎是错误的..
if ($('#menu-item-49').hasClass('current-menu-item' || 'current-menu-parent') ) {
$('ul.sub-menu ').css('display', 'block');
}
谢谢!
【问题讨论】:
标签: jquery if-statement
确定一个对象是否具有一个类或另一个类的正确方法是什么? 以下似乎是错误的..
if ($('#menu-item-49').hasClass('current-menu-item' || 'current-menu-parent') ) {
$('ul.sub-menu ').css('display', 'block');
}
谢谢!
【问题讨论】:
标签: jquery if-statement
您可以改用is 吗?
if ($('#menu-item-49').is('.current-menu-item, .current-menu-parent')) {
$('ul.sub-menu ').css('display', 'block');
}
检查当前匹配的集合 反对选择器的元素并返回 如果这些元素中至少有一个,则为真 匹配选择器。
不必使用多个 hasClass 查询,这是另一种选择:
if ($('#menu-item-49').hasClass('current-menu-item') ||
$('#menu-item-49').hasClass('current-menu-parent')) {
$('ul.sub-menu ').css('display', 'block');
}
【讨论】:
'.current-menu-item, .current-menu-parent' 目前第二个参数被忽略了。
您不能在hasClass 中使用||(或)运算符。试试这个:
if ($('#menu-item-49').hasClass('current-menu-item') ||
$('#menu-item-49').hasClass('current-menu-parent')) {
$('ul.sub-menu ').css('display', 'block');
}
如果过于冗长,您也可以这样做:
var $menuItem = $('#menu-item-49');
if ($menuItem.hasClass('current-menu-item') ||
$menuItem.hasClass('current-menu-parent')) {
$('ul.sub-menu ').css('display', 'block');
}
甚至更好:
var $menuItem = $('#menu-item-49');
if ($menuItem.is('.current-menu-item, .current-menu-parent')) {
$('ul.sub-menu ').css('display', 'block');
}
【讨论】:
'.current-menu-item,.current-menu-parent' 我很确定 is() 只接受 1 个参数,但是这个解决方案的另一个答案做了同样的事情,所以现在我开始怀疑自己了。 :o)
if ($('#menu-item-49').hasClass('current-menu-item') || $('#menu-item-49').hasClass('current-menu-parent') ) {
$('ul.sub-menu ').css('display', 'block');
}
您是否尝试过以下方法?
【讨论】:
您还可以使用.is() 来检查任何以current-menu- 开头的类,方法是:
if ( $('#menu-item-49').is('[class]^="current-menu-"') ) {
//49 is the current menu!
}
^= 等更多属性选择器可以在here 找到。
【讨论】:
以下是您的想法:
var menuItem49 = $('#menu-item-49');
if (menuItem49.hasClass('current-menu-item') || menuItem49.hasClass('current-menu-parent')) {
// ...
}
【讨论】:
如此接近!
试试:
if ($('#menu-item-49').hasClass('current-menu-item') || $('#menu-item-49').hasClass('current-menu-parent') ) {
$('ul.sub-menu ').css('display', 'block');
}
【讨论】:
改为这样,将其分成两部分:
if ($('#menu-item-49').hasClass('current-menu-item') || $('#menu-item-49').hasClass('current-menu-parent') ){
$('ul.sub-menu ').css('display', 'block');
}
希望对你有帮助
【讨论】: