jquery:你可以将选择器串起来吗?

时间:2012-05-13 01:29:05

标签: jquery jquery-selectors

我正在尝试为客户端编写一些特殊的验证代码。我想在jquery中的find函数中将几个选择器串起来这可能吗?

我试图说,例如,在当前可见的字段集中,找到type = text并且具有类" -required"的所有输入字段,也找到所有textarea字段也有班级" -required"。

我正在尝试这个,但它不起作用,它只选择Textarea字段

var reqButEmpty = $('fieldset:visible')
.find('input[type="text", class*="-required",textarea[class*="-required"]')
.filter(function()

2 个答案:

答案 0 :(得分:4)

var reqButEmpty = $('fieldset:visible')
 .find('input[type="text"].-required, textarea.-required')....

你有几个错误:

  • 您没有终止属性选择器:[type="text", ...
  • class*=正在寻找类型为(<class>
  • 的元素
  • 如果您想要一个类选择器,只需在其前面添加一个点。

<强>更新

var reqButEmpty = $('fieldset:visible')
 .find('input[type="text"], textarea').filter(function(){
     return this.className.indexOf("-required") >= 0;
 });

或者 @cliffs of the疯狂

的建议
var reqButEmpty = $('fieldset:visible')
 .find('input[type="text"], textarea').filter('[class*="-required"]');

答案 1 :(得分:3)

你可以,但不是以你正在尝试的方式

.find('input[type="text"][class*="-required"],textarea[class*="-required"]')

要获得“和”行为,我们在同一个元素选择器上使用两个单独的“属性”选择器。

然后我们使用,多重选择器来获取textarea的“或”行为。

我还假设-required是类名的一部分,而不是整个事物。一些HTML参考会有所帮助。