[英]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.