确定选择器有效性

时间:2011-01-21 21:06:28

标签: jquery jquery-selectors

我有这样的功能:

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的内容,如果它实际上不存在于页面上,我也希望得到错误,这样我就可以返回值。有什么想法吗?

1 个答案:

答案 0 :(得分: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;
};