jQuery-요소 내부에서 요소 선택


95

다음과 같은 마크 업이 있다고 가정 해 보겠습니다.

<div id="foo">
  ...
  <span id="moo">
    ...
  </span>
  ...
</div>

#moo를 선택하고 싶어요.

$('#foo').find('span')작동하지만 $('span', $('#foo'));그렇지 않습니까?


10
왜 안돼 $('#moo')? ;) Btw. 작동합니다 : jsfiddle.net/fkling/k5X2r
Felix Kling

왜 그런지 모르겠지만 선택한 범위에 연결하는 함수는 페이지의 모든 범위에 적용됩니다. #foo 내부의 범위뿐만 아니라 #foo :(
Alex

2
변수에서 이미 선택한 요소가있는 경우에는 어떻습니까? 예를 들어 var ele = $("div #foo")여기에서 어떻게 moo에 도달 할 수 있는지 (배열 참조를 사용하지 않고)
Worthy7

답변:


129

이 중 하나를 사용할 수 있습니다 [가장 빠른 것부터]

$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")

구경하다


1
세 번째는 span # foo가 아니라 span # moo 여야한다고 생각합니다.
xr280xr 2013-07-25

60

사실, $ ( '# id', this); 직계 자식뿐만 아니라 모든 하위 수준에서 #id를 선택합니다. 대신 이것을 시도하십시오.

$(this).children('#id');

또는

$("#foo > #moo")

또는

$("#foo > span")

요소 에 클래스가 아닌 ID 가 있기 때문에 아무것도 선택 moo하지 않습니다.
Felix Kling 2011

4
그 지적이의 가치 .children()와는 .find()단 한 수준 DOM 하위 트리 아래 전 여행 것을 제외하고 비슷합니다.
Kevin

잘 작동합니다. 감사합니다 ;-)
Ali Lashini

9

그냥 사용하지 않는 이유 :

$("#foo span")

또는

$("#foo > span")

$('span', $('#foo')); 내 컴퓨터에서 잘 작동합니다.)


$($(elementA), 'tr#' + key + ' span')나를 위해 작동하지 않습니다 (jQuery를 1.10.2)
코디

8

find옵션을 사용 하여 다른 요소 내부의 요소를 선택할 수 있습니다 . 예를 들어 특정 div에서 id가 txtName 인 요소를 찾으 려면 다음과 같이 사용할 수 있습니다.

var name = $('#div1').find('#txtName').val();

6

여기를보세요- 요소의 하위 요소를 쿼리하려면 :

$(document.getElementById('parentid')).find('div#' + divID + ' span.child');


3

....하지만 $ ( 'span', $ ( '# foo')); 작동하지 않습니까?

이 메서드는 선택자 컨텍스트 제공이라고 합니다.

여기 에서 jQuery 선택기에 두 번째 인수를 제공합니다 . 직접 선택 또는 jQuery 요소를 위해 전달하는 것처럼 CSS 객체 문자열이 될 수 있습니다.

예.

$("span",".cont1").css("background", '#F00');

위의 줄은라는 클래스를 가진 컨테이너 내의 모든 범위를 선택합니다 cont1.

데모


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