2012-02-02 33 views

Trả lời

12

dễ nhất:

$('ul[class="one"] li'); 

Alternative, chọn .one nhưng không phải .two:

$('ul.one:not(.two) li'); 
+0

Điều này không thể duy trì trong thời gian dài trừ khi các lớp được sử dụng không bao giờ thay đổi từ 'một' và 'hai'? –

+0

@Brian: Tôi không chắc bạn đang làm gì. Đầu tiên trong hai giải pháp của tôi, tôi đã đăng chính xác những gì OP đang yêu cầu, và nó đủ đơn giản để dễ bảo trì. Thứ hai làm những gì anh * có thể * có ý muốn yêu cầu. Tôi nghĩ câu trả lời của bạn bị quá phức tạp, điều này khiến cho việc duy trì khó khăn hơn rất nhiều. –

+0

Ngoài việc phức tạp hơn, câu trả lời của Brian cũng chỉ bằng một nửa tốc độ của một trong hai điều này. – Sorpigal

2

Bạn có thể sử dụng chức năng lọc jquery để đếm số bao nhiêu lớp đã được gán cho phần tử. Khi tìm kiếm tất cả các UL với lớp 'một' chỉ sau đó số lượng các lớp duy nhất đối với mục sẽ là 1. Một khi bạn đã lọc UL của bạn chỉ có thể chọn sub LI's.

var listItems = 
$('ul.one') 
.filter(function(index) { 
    return $(this).attr('class').split(' ').length == 1; 
}) 
.find('li'); 
Các vấn đề liên quan