2014-06-17 50 views
0

我在一个页面中有几种形式,并且我想将目标表单(表单ID)中的所有输入字段定位在其中具有特定类别(例如“有错误“)。jQuery选择具有特定类别的目标表单中的输入元素

我尽管这会做的伎俩:

target_elem = "#form_b"; 
$(target_elem + ":input").hasClass("has-error").removeClass("has-error"); 

至今没有运气。我也试过玩过滤器。 TSK

+1

有什么看法'#form_b:input'将选择?什么'hasClass'返回?你是否阅读过文档? http://api.jquery.com/hasclass/ –

回答

3

Demo

只需使用.class选择:

$(target_elem + " input.has-error").removeClass("has-error"); 
+0

最好的;即使我不知道类选择器是否真的有用。我们可以将'removeClass'应用到目标元素的所有输入中......不知道哪种解决方案最快。 –

+0

不是在DOM中查找/搜索所有输入,只会搜索给定类别的输入 –

+0

是的,但是'target_elem'已经是一个ID,所以搜索不会在整个DOM中搜索。对于少量输入更新,我应该更快速地不按类进行搜索。 –

-1

没必要用“:” $(target_elem + " input").hasClass("has-error").removeClass("has-error");应该工作

请注意,您也可以忘掉hasClass("has-error") 这将需要更多的时间来找到这个类的输入不是删除该类每个输入的任何检查它存在。

target_elem = "#form_b"; 
$(target_elem + " input").removeClass("has-error"); 
-1

试试这个...

$("input[class*='has-error']",$(target_elem)).removeClass("has-error"); 

或使用该

$("input.has-error",$(target_elem)).removeClass("has-error"); 
+1

与类选择器相比,'* ='的性能非常糟糕! –

+0

@@ peter:这是另一个答案... –

0

试试这个,让我知道,如果有帮助:

$(".has-error").each(function(){ 
    $(this).removeClass("has-error"); 


    }); 

活生生的例子:http://jsbin.com/yudaseqe/1/edit

相关问题