-1

我想选择所有非只读禁用且具有名称的可编辑表单元素( input[type=text]input[type="radio"]input[type="checkbox"]和) 。是否可以使用单个选择器而不重复每种类型的只读和禁用属性?selecttextarea

换句话说,我可以提供[name]:not([disabled]):not([readonly])一个全局过滤器,而不是为每个输入类型重复吗?

我对单个选择器特别感兴趣,因为我想将它作为选择器过滤器提供给$.live/ $.on。我不能使用.not或任何此类方法,因为可以动态添加元素。

4

2 回答 2

1
$('input[type="text"], input[type="radio"], input[type="checkbox"], select, textarea')
     .is(':not([disabled]):not([readonly])');

我发现这个不错的解决方案似乎有效。

$('(input[type="text"], input[type="radio"], input[type="checkbox"], select, textarea):not([disabled]):not([readonly])')

基本上,您似乎可以()在选择周围添加,然后执行 :not() 条件。天哪,我爱 jQuery!

于 2012-05-02T08:12:46.483 回答
1

你可以使用filter方法:

$("input[type='text']:enabled, textarea:enabled, select:enabled, input[type='radio']:enabled")
.filter(function(){ return $(this).attr("readonly", false); // or true
}).on("click", function(){
     .....
})
于 2012-05-02T08:12:54.853 回答