2011-12-30 55 views
10

Với html sau ...jQuery - nội dung tương đương với hơn nội dung chứa

<div id="group"> 
    <ul> 
     <li><div class="category">one</div></li> 
     <li><div class="category">one</div></li> 
     <li><div class="category">onetwo</div></li> 
     <li><div class="category">two</div></li> 
    </ul> 
</div> 

... Tôi đang cố gắng để tìm ra cách để làm cho một selector trong jQuery mà sẽ chọn tất cả các yếu tố mà '#group ul li' có một con '.category' với innerHTML bằng một số chuỗi (ví dụ: "một"). Ví dụ, với chuỗi "một", bộ chọn này sẽ trả về hai li đầu tiên.

Dưới đây là những gì tôi có cho đến nay:

$('#group ul li') sẽ chọn tất cả các li của. Sau đó, tôi cần phải lọc:
$('#group ul li').filter(".category:contains('one')") sẽ chọn tất cả các li này sao cho chúng có con với danh mục lớp chứa chuỗi 'một'. Tuy nhiên, có cách nào để kiểm tra xem đây có phải là bằng cho một không?

Tôi nghĩ có lẽ chỉ cần viết hàm của riêng mình mà kiểm tra bình đẳng và vượt qua để lọc?

Trả lời

20
$('#group ul li div.category').filter(function() {return $(this).text() == "one";}).parent() 

Đây có lẽ là cách cụ thể nhất. Xem example.

+0

Ví dụ của bạn không trả lại kết quả mong đợi? –

+1

Bạn muốn nhận được hai 'li' đầu tiên và nó thực hiện chính xác điều đó. Kết quả mong đợi của bạn là gì? –

+0

Có thể đã bỏ lỡ .parent() ở cuối ... xấu của tôi –

4

Bạn có thể sử dụng chức năng bộ lọc với một cuộc tranh luận chức năng. Một cái gì đó như:

$('#group ul li').filter(function() { return $(this).html() == 'one'; }) 
+0

Điều này là gần, nhưng $ (this) nên là kiểm tra trẻ em loại, không phải là điều này ... –

0

liệu câu lệnh if có hoạt động hay bạn đang tìm kiếm bộ chọn? như tuyên bố, điều này có thể làm ...

if ($('#group ul li .category').html() == 'one') 
+0

Tôi đang tìm kiếm một bộ chọn, tôi muốn chọn nhiều khác nhau

  • 's. –

    3

    Không có câu nào ở trên là đúng. Tôi đã sử dụng công cụ này làm công cụ chọn của mình:

    $('#group ul li').filter(function() { 
        return $(this).children('.category').html() == 'one'; 
    }) 
    

    Vui lòng cho tôi biết nếu có cách nào tốt hơn để làm điều này và tôi vui vẻ chấp nhận câu trả lời của bạn.

    +0

    Trên thực tế .... Bạn cũng giống như câu trả lời được chấp nhận, ngoại trừ việc anh ta lọc cụ thể hơn ở phía trước và bạn sẽ lọc cụ thể hơn sau. Tôi thành thật như người khác tốt hơn. – Metropolis

    +0

    Xem nhận xét về câu trả lời được chấp nhận. –

    Các vấn đề liên quan