2011-08-21 4 views
2

jQuery 선택기 : 양식의 입력 대상 지정

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

그리고 훨씬 나아질 수 있다고 느낍니다. 더 빠르고 더 짧게 느껴집니다.

와 비슷한 것

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

THIS 정말 원했어! 제발 봐 here

답변

3

당신이 정말로 원한다면 "청소기"구문이 시도해 볼 수도, 나쁘지 않습니다. 이제는 #registration_form을 두 번이 아니라 한 번만 찾아야합니다.하지만 두 번째 메소드 호출을 추가하고 있습니다. 또한 정확한 ID를 이미 매치하고 있기 때문에 위의 예에서 처리 시간을 거의 절약 할 수 있습니다.

+0

디자이너와 jQuery 초보자를 위해 구문을 더 잘 읽을 수 있다고 생각합니다. – Dan

+0

코드에서 파이썬 접근 방식을 사용합니다. 코드 크기가 더 우수합니다. – Dan

2

나는 그런 선택기가 존재하지 않는 것이 두렵다. 그러나 선택자를 단순화하려면 클래스를 사용할 수 있습니다.

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

약간 청소기, 그러나 반드시 빨리 : 당신은 무엇

+0

내가 지금 무엇을 할 것입니다 그. 하지만 좀 더 유익한 다른 답변을 선택하겠습니다. – Dan

+0

당신의 아이디어는 매우 실용적입니다. – Dan

4

당신은 당신의 구문을 단축하기 위해 :text:password 선택기로 find()를 사용할 수 있습니다

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

을 성능의 관점에서, 그것은 약간 빠른,하지만 훨씬 의해 수 있습니다.

편집 ::text 이후와 :password 네이티브 CSS 선택기 아닌, filter()을 사용하여 다음과 같은 변화가 더 빠를 수 있습니다 (그리고 처음에 짧은입니다) :

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

그래도 거의 빠르지는 않을 것입니다. 보다 빠르고 간단하지만 확실한 속도는 아닙니다. 나는 그런 종류의 효율성 변화를 알아 차리는 데 필요한 수백 또는 수천 개의 요소가 등록 양식에 있다고 의심합니다. –

+0

@Stefan, 실은 선택기를 바꾸면 성능이 많이 향상 될 수 있다고 생각하지 않습니다. 실제로 "빠름 * 입력 *"이라는 요구 사항을 구문 분석했습니다. –

+2

공식 문서는이 문제에 대해서도 경고합니다. 구체적으로 이것은 jQuery 특정 구문이며 이는 원시 최적화를 이용할 수 없다는 것을 의미합니다. 구체적으로는 "텍스트를 사용하는 쿼리는 기본 DOM querySelectorAll() 메서드에서 제공하는 성능 향상을 이용할 수 없습니다. 최신 브라우저의 성능을 향상 시키려면 대신 [type ="text "]를 사용하십시오." –