选择具有条件的多个标签

Selecting multiple tags with condition

本文关键字:标签 有条件 选择      更新时间:2023-09-26

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

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

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

$('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!

您可以使用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(){
     .....
})
相关文章: