2010-05-11 38 views
13

Tôi muốn chọn từng div có màu nền đỏ chẳng hạn. là điều này có thể trong jquery?bộ lọc phần tử jquery bằng css

<div style="background-color:red"></div> 
<div style="background-color:white"></div> 
<div style="background-color:red"></div> 
<div style="background-color:yellow"></div> 

cảm ơn bạn

Trả lời

11
$('div[style=background-color:red]'); 
+9

Sẽ chỉ hoạt động nếu có thuộc tính kiểu trên thẻ – ThiefMaster

+3

@ThiefMaster - Tôi đã trả lời câu hỏi đó tham chiếu đến ví dụ html ở trên. – Gabe

+6

không có gì sai với điều đó, chỉ đáng để chỉ ra trong trường hợp ai đó sử dụng điều này không nhận ra điều đó. Ngoài ra, nếu thẻ kiểu không định dạng chính xác như 'màu nền: màu đỏ', giá trị này sẽ không khớp với –

16

Bạn có thể sử dụng bộ lọc jQuery:

$('div').filter(function() { 
    return this.element.style['background-color'] == 'red'; 
}); 

Nhưng, như tvanfosson đã nói, cách chính xác sẽ được gán một lớp CSS cho mỗi divs của bạn, sau đó bạn có thể gọi các đối tượng bằng cách sử dụng jQuery như thế này (đó là cách ưa thích làm việc với jQuery):

$('.yourCSSClass'); 
+0

Điều đó sẽ chỉ hoạt động nếu màu nền được khai báo rõ ràng trong thuộc tính kiểu của thẻ ... –

+0

trả về this.style ['background-color'] == 'red'; - điều này làm việc cho tôi – Tebe

1

tôi nghĩ rằng bạn cần một bộ lọc tùy chỉnh cho rằng nếu bạn không muốn dựa vào một style=xxx thuộc tính nhất định trên thẻ:

$('*').filter(function() { /* check the background color of this */ }); 
6

Tại sao làm điều đó một cách khó khăn? Một giải pháp tốt hơn là sử dụng các lớp CSS để cung cấp cho các yếu tố của bạn phong cách của họ, sau đó bạn chỉ có thể sử dụng bộ chọn dựa trên lớp.

<style type="text/css"> 
    .alert { 
     background-color: red; 
    } 
</style> 

<div class="alert"></div> 


$('.alert').... 
2

Trước hết, tôi không bao giờ khuyên bạn nên đặt kiểu trực tuyến trên các phần tử trang. Gán các lớp CSS và kiểm soát màu nền của bạn trong một tài liệu CSS bên ngoài.

<div class="red"></div> 
<div class="white"></div> 
<div class="red"></div> 
<div class="yellow"></div> 

Và trong CSS của bạn:

.red {background-color:red;} 
.white {background-color:white;} 
.yellow {background-color:yellow;} 

Sau đó, nó giúp bạn dễ dàng chọn những màu đỏ bằng cách sử dụng: $('div.red')

15

Mã này cũng làm việc cho CSS đó là không quy định tại thuộc tính kiểu của thẻ:

$('div').filter(function() { 
    return $(this).css('background-color') == 'red'; 
}); 
Các vấn đề liên quan