[英]My JQuery exist function: does it make sense or not?
最近幾天我有點困惑。 我可以隨時使用我的JQUERY選擇器...但是我沒有檢查選擇器是否存在,而是使用.each函數。
var exist = function(obj){
var returnObject ={};
for(var key in obj){
if(obj[key].length){
returnObject[key] = obj[key];
}else {
return false;
}
}
return returnObject;
}
//define all your selectors that would be needed for core functionality.
var activeSelectors = exist({
selList : $('div.selectorone'),
selTag : $('a#tagtwo'),
selFloat : $(div.float) /*etc etc*/
})
if (activeSelectors) {
console.log('all my core selectors are here!');
/* do Stuff*/
}
我知道這看起來有點多,尤其是如果您只需要一個選擇器時,但我想不出更好的方法(除了在每個選擇器處使用if腳的if語句)。 我看到人們在用
$('div#mySelector').each(function(){ /* do stuff*/});
但我不同意這很好。 注意,#mySelector(因為它是一個ID)僅被允許一次。
我希望收到反饋。 請考慮性能與尼斯編程。
有關更多信息,請在下面評論或與我聯系!
如果我真的想避免只使用普通的if
語句,那么我可能只想使用一個簡單的函數,例如:
var exists = function()
{
for (var i in arguments)
{
if ($(arguments[i]).length == 0)
{
return false;
}
}
return true;
}
並像這樣調用它:
var list = $('div.selectorone');
var tag = $('a#tagtwo');
var float = $('div.float');
if (exists(list, tag, float))
{
// Do some stuff.
}
要么:
if (exists('div.selectorone', 'a#tagtwo', 'div.float'))
{
// Do some stuff.
}
我確實認為您正在過度設計這個問題。 您真正需要做的就是檢查您所做的每個選擇的length
屬性(即list
, tag
, float
變量)。
同樣,性能在這里完全不是問題。 檢查元素是否存在的方法實際上會影響您網站的用戶體驗嗎? 正如Donald Knuth所說:
我們應該忘記效率低下的問題,例如大約97%的時間:過早的優化是萬惡之源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.