当我在JS或jQuery中编写函数并且需要参数时,我使用if something.length
技巧......
this.example = function(e) {
if ($(e).length) {
/*blablabla*/
} else {
return false;
}
}
但我不想在所有功能中这样做。有没有办法概括这个?
像:
this.ck = function(e) {
return function(e){
if (!(e.length)) { return false;}
}
}
this.example = function(e) {
ck(e)
/*blablabla*/
}
答案 0 :(得分:2)
也许这个,但见下文:
function ifNonEmpty(f) {
return function(e) {
if (!$(e).length) return false;
return f(e);
};
}
你会这样使用:
var myCoolFunction = ifNonEmpty(function myCoolFunction(e) {
// your implementation
};
但我建议不要编写将jQuery对象作为参数的函数,而是将这些函数编写为您自己的jQuery插件。
答案 1 :(得分:1)
我建议如下。
此示例首先测试参数是否实际包含任何内容(即不为空),然后您的.length检查可以是否为
function isNonEmpty(p){
if ( (p != null) && (p.length > 0) ){
//test
}
}
无论如何,我会谨慎使用.length。例如,如果传递字符串.length
将有一个值!
测试某些东西是否是jQuery对象:
alert(p instanceof jQuery); //will alert "true" if p is a jQuery object.
所以,这给了我们:
function isNonEmpty(p){
if ( (p != null) && (p instanceof jQuery) && (p.length > 0) ){
//test
}
}
或类似的东西。无论哪种方式,都应该有足够的代码来定制你的意图。