jQuery 선택기에서 선행 콜론의 목적은 무엇입니까?


84

저는 Wijmo 툴킷을 사용하기 시작했으며 설명서 페이지에서 이와 유사한 몇 가지 예제 선택기를 발견했습니다.

$(":input[type='radio']").wijradio();

나는 다음과 같이 썼을 것입니다.

$('input[type=radio]').wijradio();

이것들이 똑같습니까 아니면 내가 놓친 것이 있습니까?

위의 두 가지 차이점이 있습니다. 첫 번째 선택자는 콜론으로 시작하고 입력 유형에 대한 따옴표가 있습니다.


4
하나는 특수 :input선택자이고 다른 하나는 일반 Element선택자입니다.
mellamokb

답변:


85

:inputA는 jQuery를 확장 하면서 inputCSS의 선택이다는.

textarea, buttonselect요소는 전자와 일치하지만 후자는 일치하지 않습니다.

후자는 더 빠르므로 특정 radio예에 사용하십시오 . :input엄격하게 <input>태그 가 아니더라도 "모든 양식 요소"를 원할 때 사용 합니다. 이 경우에도 표준 CSS 선택기를 먼저 사용한 다음 .filter(':input')해당 세트 에서 사용하는 것이 좋습니다 .

: input은 CSS 사양의 일부가 아닌 jQuery 확장이므로 : input을 사용하는 쿼리는 기본 DOM querySelectorAll () 메서드에서 제공하는 성능 향상을 활용할 수 없습니다. : input을 사용하여 요소를 선택할 때 최상의 성능을 얻으려면 먼저 순수한 CSS 선택기를 사용하여 요소를 선택한 다음 .filter ( ": input")을 사용하십시오.

1.7.2 소스에서 : input 필터는 nodeName에 대해 정규식을 테스트합니다.

input: function( elem ) {
            return (/input|select|textarea|button/i).test( elem.nodeName );
},

말이 되네요, 감사합니다! 그리고 따옴표는 완전히 선택 사항입니까?
Morten Mertner

1
솔직히, 나는 사용한 적이 [type=]:input내가 사용, 특정 유형을 찾고 있어요 경우 때문에 :input먼저 주위에 먼 길을 보인다 그들 모두를 얻을 수 있습니다. 순수한 CSS 선택 자의 경우 따옴표는 표준이지만 브라우저는 용서합니다. 여기에서 /없이 빠르게 테스트 할 수 있습니다. reference.sitepoint.com/css/css3attributeselectors/demo
David Ruttka

그래서 $ ( ": checked")는 체크 박스를 제공합니다. .. 이것은 또한 jquery 확장입니까?
Vishal Sharma 2013 년

@David Ruttka : "브라우저는 용서합니다"는 HTML과 쿼크 모드의 CSS에만 적용됩니다. 이 문장은 표준 모드의 CSS에는 적용되지 않습니다. 경우에 따라 따옴표를 합법적으로 생략 할 수 있습니다.
BoltClock

예를 first select the elements using a pure CSS selector, then use .filter(":input").들어도 될까요?
Poutrathor

17

$("input")선택은 타입 입력의 요소를 선택합니다

그동안 $(":input")선택기는 모든 입력 요소 잡을 (등과 텍스트 영역, 선택 입력 등을 ...)

자세한 내용은 다음 위치에서 :input선택기에 대한 jQuery 공식 문서를 참조하십시오 .

http://api.jquery.com/input-selector/


6

:input선택기는 기본적으로 모든 선택 form제어 (입력 텍스트 영역, 선택 버튼 요소) 어디에 input선택기 선택 태그 이름의 모든 요소 input.

라디오 버튼은 form요소이고 input태그를 사용 하므로 둘 다 라디오 버튼을 선택하는 데 사용할 수 있습니다. 그러나 두 접근 방식 모두 요소를 찾는 방식이 다르므로 각각 성능 이점이 다릅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.