Dan*_*der 78 javascript syntax jquery logic
我有一个简单的if语句:
if ($('html').hasClass('m320')) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作.但是,我想添加更多类来if statement检查<html>标记中是否存在任何类.我需要它所以它不是全部而是只有至少一个类的存在但它可以更多.
我使用的情况是,我有类(例如m320,m768),增加了对各种视口的宽度,所以我只想执行某些jQuery的,如果它是一个特定的宽度(类).
这是我到目前为止所尝试的:
1.
if ($('html').hasClass('m320', 'm768')) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
2.
if ($('html').hasClass('m320')) || ($('html').hasClass('m768')) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
3.
if ($('html').hasClass(['m320', 'm768'])) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
这些似乎都不起作用.不确定我做错了什么,但很可能是我的语法或结构.
elc*_*nrs 151
您可以使用is()而不是hasClass():
if ($('html').is('.m320, .m768')) { ... }
Run Code Online (Sandbox Code Playgroud)
Jam*_*gne 68
你在第二次尝试时只是弄乱了一些括号.
var $html = $("html");
if ($html.hasClass('m320') || $html.hasClass('m768')) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
jfr*_*d00 25
为了好玩,我写了一个小jQuery附加组件方法,它将检查多个类名中的任何一个:
$.fn.hasAnyClass = function() {
for (var i = 0; i < arguments.length; i++) {
if (this.hasClass(arguments[i])) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
然后,在您的示例中,您可以使用此:
if ($('html').hasAnyClass('m320', 'm768')) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
您可以根据需要传递任意数量的类名.
这是一个增强版本,它还允许您传递由空格分隔的多个类名:
$.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
}
Run Code Online (Sandbox Code Playgroud)
工作演示:http://jsfiddle.net/jfriend00/uvtSA/
Kol*_*lja 24
这可能是另一种解决方案:
if ($('html').attr('class').match(/m320|m768/)) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
根据jsperf.com,它也很快.
对于任何想要了解所有这些不同选项的不同性能方面的人,我在这里创建了一个jsperf案例:jsperf
简而言之,使用element.hasClass('class')是最快的.
下一个最好的选择是使用elem.hasClass('classA') || elem.hasClass('classB').关于这一点的说明:订单很重要!如果更有可能找到"classA"类,请先列出它!只要满足其中一个条件语句,OR条件语句就会返回.
到目前为止最糟糕的表现是使用element.is('.class').
jsperf中还列出了CyberMonk的功能和Kolja的解决方案.
| 归档时间: |
|
| 查看次数: |
90173 次 |
| 最近记录: |