2010-02-15 64 views
2

當我寫在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*/ 

} 

回答

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

我會建議如下。

這個例子將首先測試的參數是否真的包含任何東西(即不爲空),那麼你的。長度檢查可能是它是否

function isNonEmpty(p){ 
    if ((p != null) && (p.length > 0)){ 
     //test 
    } 
} 

我會謹慎使用。長度,反正。例如,如果你傳遞一個字符串.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 
    } 
} 

或東西之流。無論哪種方式,應該有足夠的代碼來定製您的意圖。

+0

我喜歡這個!多謝 – meo 2010-02-16 11:05:24