Jquery 确定是否存在具有类的元素的更快方法? 说明:
我试图找到一种方法来检查是否存在具有特定类的元素Jquery 确定是否存在具有类的元素的更快方法? 说明:,jquery,Jquery,我试图找到一种方法来检查是否存在具有特定类的元素 然后我遇到了以下代码: if ($(".mydivclass")[0]) { // Do something if class exists } else { // Do something if class does not exist } 这表示如果第一个([0])索引处有一个真值,则假定类存在 现在我又可以找到另一种解决方案,如: if ($(".mydivclass").size()) { // code he
if ($(".mydivclass")[0])
{
// Do something if class exists
}
else
{
// Do something if class does not exist
}
这表示如果第一个([0])
索引处有一个真值,则假定类存在if ($(".mydivclass").size())
{
// code here
}
size()
方法只返回jQuery选择器选择的元素数量——在本例中是类为mydivclass
的元素数量。如果返回0
,则表达式为false,因此不存在任何值;如果返回任何其他数字,则div必须存在$('.mydivclass')[0]
是最快的方法
来源:
性能测试:
相关问题:
所以我也很好奇,我对以下5种方法做了一些测试:
var testCount = 100000;
var cn = 'container';
var cns = '.'+cn;
console.time('[0]');
for(var i=testCount;i>0;i--){
if($(cns)[0]){};
}
console.timeEnd('[0]');
console.time('.size');
for(var i=testCount;i>0;i--){
if($(cns).size()){};
}
console.timeEnd('.size');
console.time('.length');
for(var i=testCount;i>0;i--){
if($(cns).length){};
}
console.timeEnd('.length');
console.time('querySelector');
for(var i=testCount;i>0;i--){
if(document.querySelector(cns)){};
}
console.timeEnd('querySelector');
console.time('classname');
for(var i=testCount;i>0;i--){
if(document.getElementsByClassName(cn)[0]){};
}
console.timeEnd('classname');
我在这个页面中进行测试,只是粘贴代码并在chrome控制台中运行它。事实证明,前3种方法的性能相似,唯一的区别在于你不能只做
if($(“.mydivclass”)
?还有可能的重复,在答案中你可以找到:@joelameida,我的问题是哪一种方法比你自己更快:打开jsperf链接并测试<代码>$(“.mydivclass”)[0]是最快的getElementsByClassName
总是更快,因为它是纯javascript,根本不使用jQuery。普通javascript方法总是比jQuery快。
[0]: 2168.198ms
.size: 1951.075ms
.length: 1936.117ms
querySelector: 672.186ms
classname: 242.048ms