2011-01-21 3 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/

Вы должны проверить в вашем методе parseValue если value на самом деле это число. Если это так, просто верните 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

Смежные вопросы