2014-06-17 54 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

相關問題