2011-01-21 17 views
0

を決定する:私はこのような機能を有するセレクタ有効

function parseValue(value, defaultValue) { 
    if ($.isFunction(value)) 
     return value(); 

    if (!value) 
     return defaultValue; 

    if ($(value).size() > 0) 
     return $(value).val(); 

    return value; 
}; 

valueする機能、「値」、またはjQueryのセレクタであってもよいです。私の問題は、セレクタが有効である(コントロールを見つける)方法を決定する方法です。

たとえば、valueが56.87 $(value).size() > 0に等しいと評価された場合。私はそれが偽であることを望む。 #invalidcontrolidのようなものが渡されたとしても、ページに実際に存在しない場合は、私は値を返すことができるようにfalseを戻したいと思います。何か案は?

答えて

2

.size()は、.lengthプロパティの単なるラッパーメソッドです。だから、これは(とし)動作するはずです:

http://www.jsfiddle.net/EawgE/

valueが実際に数ある場合は、あなたのparseValueメソッド内でチェックする必要があります。その場合は、falseなどを返すだけですが、それをjQueryコンストラクタに渡しません。

if(typeof value === 'number') {} 

または

if($.type(value) === 'number') {} 

例:チャンピオンのような

function parseValue(value, defaultValue) { 
    if ($.isFunction(value)) 
     return value(); 

    if ($.type(value) === 'number') 
     return value; // ? 

    if ($.type(value) === 'string' && $(value).length) 
     return $(value).val(); 

    return defaultValue; 
}; 
+0

作品。感謝jAndy。 – Josh

関連する問題