2013-06-23 35 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

相關問題