2010-09-22 30 views
27
<div class="outer"> 
    <div class="inner"></div> 
</div> 

làm cách nào để tìm div bên trong ở đây?Lớp jQuery trong bộ chọn lớp

$container.find('.outer .inner')

là chỉ cần đi để tìm một div với class="outer inner", là đúng?

vì vậy tôi cố gắng

$container.find('.outer > .inner')

nhưng điều đó dường như không được làm việc.

Edit:

Tôi biết nó dễ dàng để tìm thấy với một cái gì đó giống như

$container.find('.outer').find('.inner')

nhưng tôi đang tìm kiếm các loại cú pháp selector duy nhất mà đọc IMHO tốt hơn.

+0

Cách '$ container' được xác định? Bên cạnh đó, nên sử dụng bộ chọn đơn bất cứ khi nào có thể. Nó là cách dễ dàng hơn để đọc nếu bạn không cần phải tìm kiếm các bộ phận khác nhau trên tất cả các nơi chọn. – jwueller

+0

"nhưng tôi đang tìm kiếm loại cú pháp chọn duy nhất có khả năng đọc tốt hơn." Bạn nên chọn cách '.find (...)' bởi vì nó sẽ càng nhanh thì bộ chọn của bạn càng phức tạp hoặc nếu bạn sử dụng bộ chọn không được trình duyệt hỗ trợ. Trong trường hợp này sizzle sẽ được sử dụng để lựa chọn mà/có thể thực sự chậm so với một bộ chọn tách với '.find (...)'. – Andreas

Trả lời

58

là chỉ cần đi để tìm một div với class = "bên ngoài bên trong", là đúng?

Không, '.outer .inner' sẽ tìm kiếm tất cả các yếu tố với lớp .inner rằng cũng có một phần tử với lớp .outer như một tổ tiên. '.outer.inner' (không có khoảng trắng) sẽ cho kết quả bạn đang nghĩ tới.

'.outer > .inner' sẽ xem xét cho trẻ em ngay lập tức của một phần tử với .outer lớp cho các yếu tố với lớp .inner.

Cả hai '.outer .inner''.outer > .inner' sẽ hoạt động cho ví dụ của bạn, mặc dù các bộ chọn về cơ bản khác nhau và bạn nên cảnh giác với điều này.

+1

Tôi đã có một sai lầm trong mã của tôi đã khiến tôi nghĩ rằng bộ chọn của tôi không hoạt động, nhưng sau cùng thì đó là tất cả. Cảm ơn lời giải thích. – fearofawhackplanet

25

Đối html này:

<div class="outer"> 
    <div class="inner"></div> 
</div> 

chọn này nên làm việc:

$('.outer > .inner') 
Các vấn đề liên quan