当我用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*/
}发布于 2010-02-15 22:50:57
也许是这样,但请看以下内容:
function ifNonEmpty(f) {
return function(e) {
if (!$(e).length) return false;
return f(e);
};
}你可以这样使用它:
var myCoolFunction = ifNonEmpty(function myCoolFunction(e) {
// your implementation
};但是,我建议您将这些函数编写为您自己的jQuery插件,而不是编写将jQuery对象作为参数的函数。
发布于 2010-02-15 23:19:40
我会提出以下建议。
此示例将首先测试参数是否实际包含任何内容(即不为null),然后.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
}
}或者类似的东西。无论哪种方式,都应该有足够的代码来定制您的意图。
https://stackoverflow.com/questions/2266528
复制相似问题