2011-08-21 78 views
2

我有以下幾點:jQuery選擇:在形式指定輸入

$('#registration_form input[type=text], #registration_form input[type=password]') 

而且我覺得它可以更好:更快,更短的

喜歡的東西

$('#registration_form input[type=text,password]') 

編輯:THIS是我真正想要的!請看看here

回答

3

你有什麼不壞,如果你真的想「更清潔」的語法,你可以試試這個:

$("#registration_form").find("input[type=text], input[type=password]") 

稍微乾淨,但不一定快。它必須現在只找到#registration_form一次,而不是兩次,但是您在那裏添加了第二個方法調用。另外,由於您已經在一個確切的ID上匹配,所以您可能會在上面的示例中節省很少的處理時間。

+0

我認爲您的語法對設計人員和jQuery新人更具可讀性,所以我授予您 – Dan

+0

我在我的代碼中使用Python方法:可讀性比代碼大小更好 – Dan

2

恐怕這樣的選擇器不存在。但是,如果您想簡化選擇器,則可以使用課程。

+0

這就是我現在做的。但我會選擇其他答案作爲更多信息 – Dan

+0

您的想法很實用 – Dan

4

您可以使用find():text:password選擇縮短你的語法:

$("#registration_form").find("input:text, input:password") 

從性能的角度來看,它可能會稍快一些,但不是很多。

編輯:由於:text:password不是本機的CSS選擇器,使用filter()以下變化可能會更快(和它的短擺在首位):

$("#registration_form input").filter(":text, :password") 
+0

This但是,幾乎肯定不會更快。清潔和簡單,當然,但可能不會更快。不過,我懷疑註冊表中有幾百或幾千個元素需要注意到這種效率變化,但:P。 –

+0

@Stefan的確,我不認爲改變選擇器可以提高性能。我實際上解析了這個要求,因爲「更快*鍵入*」:) –

+2

官方文檔也警告這個問題。具體來說,這是jQuery特定的語法,這意味着它不能利用本機優化。具體來說:「使用text的查詢無法利用原生DOM querySelectorAll()方法提供的性能提升。爲了在現代瀏覽器中獲得更好的性能,請改用[type =」text「]。 –