определить действительность селектора - PullRequest
0 голосов
/ 22 января 2011

У меня есть такая функция:

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, оценивается как trueЯ хочу, чтобы это было ложным.Даже если было передано что-то вроде #invalidcontrolid, если на самом деле его нет на странице, я хочу вернуть значение false, чтобы вернуть значение.Есть идеи?

1 Ответ

2 голосов
/ 22 января 2011

.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;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...