我有一个简单的if语句:
if ($('html').hasClass('m320')) {
// do stuff
}
这与预期的一样。但是,我想向if statement
中添加更多类,以检查<html>
标记中是否存在任何类。我需要它,所以它不是所有的类,而是至少一个类的存在,但它可以更多。
我的用例是,我为不同的视窗宽度添加了类(例如m320
、m768
),所以我只想在特定宽度(类)的情况下执行特定的Jquery。
这是我到目前为止尝试过的:
1.
if ($('html').hasClass('m320', 'm768')) {
// do stuff
}
2.
if ($('html').hasClass('m320')) || ($('html').hasClass('m768')) {
// do stuff
}
3.
if ($('html').hasClass(['m320', 'm768'])) {
// do stuff
}
然而,这些似乎都不起作用。不确定我做错了什么,但很可能是我的语法或结构。
发布于 2012-05-12 05:58:00
你只是在第二次尝试的时候把括号弄乱了。
var $html = $("html");
if ($html.hasClass('m320') || $html.hasClass('m768')) {
// do stuff
}
发布于 2012-05-12 05:58:07
您可以使用is()
而不是hasClass()
if ($('html').is('.m320, .m768')) { ... }
发布于 2012-05-12 06:11:29
为了好玩,我编写了一个小的jQuery附加方法,它将检查多个类名中的任何一个:
$.fn.hasAnyClass = function() {
for (var i = 0; i < arguments.length; i++) {
if (this.hasClass(arguments[i])) {
return true;
}
}
return false;
}
然后,在您的示例中,您可以使用以下代码:
if ($('html').hasAnyClass('m320', 'm768')) {
// do stuff
}
您可以根据需要传递任意多个类名。
下面是一个增强版本,它还允许您传递由空格分隔的多个类名:
$.fn.hasAnyClass = function() {
for (var i = 0; i < arguments.length; i++) {
var classes = arguments[i].split(" ");
for (var j = 0; j < classes.length; j++) {
if (this.hasClass(classes[j])) {
return true;
}
}
}
return false;
}
if ($('html').hasAnyClass('m320 m768')) {
// do stuff
}
https://stackoverflow.com/questions/10559153
复制相似问题