Kết hợp bộ chọn lớp và bộ chọn thuộc tính với jQuery


147

Có thể kết hợp cả bộ chọn lớp bộ chọn thuộc tính với jQuery không?

Ví dụ: đưa ra HTML sau:

<TABLE>
  <TR class="myclass" reference="12345"><TD>Row 1</TD></TR>
  <TR class="otherclass" reference="12345"><TD>Row 2</TD></TR>
  <TR class="myclass" reference="12345"><TD>Row 3</TD></TR>
  <TR class="myclass" reference="54321"><TD>Row 4</TD></TR>
</TABLE>

Điều gì sẽ là công cụ chọn tôi chỉ có thể sử dụng để chọn hàng 1 và 3?

Tôi đã thử:

$(".myclass [reference=12345]") // returns nothing

$(".myclass, [reference=12345]") // returns all 4 rows (yes, I know the comma means 'or')

Tôi chắc chắn câu trả lời rất đơn giản và tôi đã thử tìm kiếm các diễn đàn và tài liệu về jQuery nhưng dường như tôi không thể tìm ra câu hỏi này. Có ai giúp được không?

Câu trả lời:


290

Kết hợp chúng. Nghĩa đen kết hợp chúng; gắn chúng lại với nhau mà không có dấu câu nào.

$('.myclass[reference="12345"]')

Bộ chọn đầu tiên của bạn tìm kiếm các phần tử có giá trị thuộc tính, được chứa trong các phần tử với lớp.
Không gian đang được hiểu là bộ chọn hậu duệ .

Bộ chọn thứ hai của bạn, như bạn đã nói, tìm kiếm các phần tử có giá trị thuộc tính hoặc lớp hoặc cả hai.
Dấu phẩy đang được hiểu là toán tử nhiều bộ chọn - bất kể điều đó có nghĩa là gì (bộ chọn CSS không có khái niệm "toán tử"; dấu phẩy có thể được gọi chính xác hơn là dấu phân cách).


1
tôi có thể kết hợp id không? ý tôi là như thế này: $ ('. mygroup [myid = "6"]')
Rahul Pawar


7

Mã này cũng hoạt động:

$("input[reference=12345].myclass").css('border', '#000 solid 1px');

1

Điều này cũng sẽ làm việc:

$(".myclass[reference='12345']").css('border', '#000 solid 1px');
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.