Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 确定是否存在具有类的元素的更快方法? 说明:_Jquery - Fatal编程技术网

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种方法做了一些测试:

  • $('.className')[0]
  • $('.className').size()
  • $('.className').length
  • document.querySelector('.className')
  • document.getElementsByClassName('className')[0]
  • 我的脚本:

    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