2013-06-23 40 views
1

如果一个元素类已经存在于DOM中,我正在寻找打破函数的最有效方法。如果元素存在,则返回一个函数

例如,检查是否一类跨度的存在,此刻我正在使用

$(function() { 
    //logic will execute 

    if ($(this).find('span.myspan').length) return; 

    //logic will execute if search doesn't find span.myspan 
}); 

我已经看到了使用一些if/else语句而不是返回的几个例子。一些使用find()的例子已经使用了

.find('span.myspan')[0] 

而不是.length是不是有没有检查它存在?或者可能是一种将其与null进行比较的方法?

因此,从函数内部检查DOM中是否存在元素的最有效方法是什么?如果存在,函数立即返回?

+1

检查。长度或[0]是同样快;我会坚持使用.length,因为我认为它更具可读性,但它并不重要。 –

回答

1

使用香草JS

console.time('t'); 
    document.querySelector('.label-key'); 
    console.timeEnd('t') 
    t: 0.000ms 
    console.time('t'); 
    $('.label-key'); 
    console.timeEnd('t') 
    t: 1.000ms 

Check out jsPerf jsperf test

这样做,也是周围的其他方法。 检查元素是否不存在然后做东西。如果它确实放在一边。

$(function() { 
    //logic will execute 

    if (! document.querySelector('.label-key');){ 

    //logic will execute if search doesn't find span.myspan 
    } 
}); 

更多的是一种风格的东西真的。

+0

不知道为什么if(not){}比if更好()return; – Aaron

+0

在条件中包装函数的其余部分不会比返回更快,并且它具有增加缩进级别和不在循环或其他控制结构中工作的缺点。 – user2357112

+0

运行速度不一定快,但输入速度更快 – raam86

相关问题