有没有办法选择具有特定属性值的所有元素?

Dor*_*use 4 javascript jquery jquery-1.6

我正在使用jQuery构建一个相当简单的插件来验证表单.当一个元素被评估为有效时,我会运行

$(this).prop("valid", false);
Run Code Online (Sandbox Code Playgroud)

在某些情况下,如果有任何内容无效,我将要阻止表单提交.基本上我正在寻找一种方法来选择有效属性为false的所有元素?我是否必须迭代所有相关元素并检查错误读数,还是有一个我忽略的jQuery选择器?就像是:

$("input[valid=false]");
Run Code Online (Sandbox Code Playgroud)

会好的.有什么建议?

ale*_*lex 5

试试这个...

$('input').filter(function() {
   return this.valid === false; 
});
Run Code Online (Sandbox Code Playgroud)

这将返回所有input元素(你的意思是:input?),其中它的valid属性 false(注意严格相等比较).

  • @Ben:你为什么不接受答案呢? (2认同)

Rob*_*nik 5

可重用的:invalidjQuery选择器过滤器

你可以写一个简单的选择器过滤器:

$.extend($.exp[":"], {
    invalid: function(element) {
        return element.valid === false;
    }
});
Run Code Online (Sandbox Code Playgroud)

然后简单地将它与您使用的任何选择器组合以获得您的元素,即:

// all invalid inputs
$(":input:invalid");
// or all invalid text boxes
$("input[type=text]:invalid");
Run Code Online (Sandbox Code Playgroud)

而已.

让我们把它全部放在一个简单的插件中,您可以轻松地将其包含在脚本代码中或放入脚本文件中(如果您使用相同的验证功能,则可以在多个页面上使用多个应用程序):

(function($) {

    $.extend($.exp[":"], {
        invalid: function(element) {
            return element.valid === false;
        }
    });

})(jQuery);
Run Code Online (Sandbox Code Playgroud)