2010-01-04 29 views
330

thể trùng lặp:
Is there a CSS parent selector?Bộ chọn CSS cho "foo có chứa thanh"?

Có cách nào để làm cho một Selector CSS mà phù hợp với những điều sau đây?

All OBJECT elements 
    which have a PARAM element inside of them 

Bộ chọn

OBJECT PARAM 

không hoạt động, vì nó phù hợp với PARAM, không phải là OBJECT. Tôi muốn áp dụng {display: none} cho các đối tượng; vô ích khi áp dụng cho các PARAM.

(Tôi biết tôi có thể kéo này off với jQuery - $("object param").closest("object") -. Nhưng tôi đang cố gắng để tạo ra quy tắc CSS trên một trang)

+0

là có bộ sưu tập css selector như thế này '.main [: hover, ul, ul> li, p] {display: inline-block;} ' –

+3

có thể làm một "có con" selector 'đối tượng: không (: trống) {display: none; } 'http://jsfiddle.net/xeepete/949a55oo/ – xeepete

+0

@xeepete bạn có thể cung cấp đề xuất đầy đủ hơn không? – SuperUberDuper

Trả lời

228

Không, những gì bạn đang tìm kiếm sẽ được gọi là một bộ chọn gốc. CSS không có; chúng đã được đề xuất nhiều lần nhưng tôi biết không có tiêu chuẩn hiện tại hoặc sắp tới bao gồm cả chúng. Bạn đúng là bạn sẽ cần phải sử dụng một cái gì đó như jQuery hoặc sử dụng chú thích lớp bổ sung để đạt được hiệu quả mà bạn muốn.

Dưới đây là một số câu hỏi tương tự với kết quả tương tự:

+74

JSYK, bộ chọn CSS mẹ sẽ đến trong CSS4, vì khả năng chọn phần tử nào trong bộ chọn được tạo kiểu bằng cách đặt ký hiệu đô la ở phía trước: '$ div> span' sẽ chọn div có khoảng cách là một đứa trẻ trực tiếp. – Ian

+85

Đặt ký hiệu đô la trước phần chọn, vì vậy nó có thể ảnh hưởng đến cú pháp SCSS/SASS, tuyệt vời. Tại sao họ không sử dụng nhiều lần đề xuất '<' dấu hiệu, hoặc ': cha mẹ 'lớp giả, hoặc thậm chí cả dấu hiệu'! 'Sau một phần chọn? Tất cả chúng dường như hợp lý hơn với tôi, hơn là sử dụng ký hiệu '$' cho tôi ... –

+8

Tôi biết, php nhiều –

88

Chỉ có điều mà đến thậm chí gần là lớp :contains giả trong CSS3, nhưng điều đó chỉ chọn nội dung văn bản, không phải thẻ hoặc yếu tố, vì vậy bạn không may mắn.

Một cách đơn giản để chọn cha mẹ với con cái cụ thể trong jQuery có thể được viết như sau:

$('#parent:has(#child)'); 
+0

Cảm ơn - nhưng khác với $ ("# #child") như thế nào? –

+76

'$ (" # parent #child ")' chọn tất cả #child elements là con của #parent. '$ ('# parent: has (#child)')' chọn tất cả các phần tử #parent có #child là con. –

+8

OP nói rằng ông biết cách làm điều đó với jQuery, nhưng muốn có CSS ​​ – MayorMonty

0

Có cách nào bạn programatically có thể áp dụng một lớp học để các đối tượng?

<object class="hasparams"> 

sau đó làm

object.hasparams 
+0

Cảm ơn, nhưng tôi cần phải làm điều này trước khi các đối tượng còn tồn tại; nếu không chúng sẽ nhấp nháy trong giây lát trước khi bị ẩn. –

+0

Nếu vấn đề của bạn là đèn flash của nội dung chưa được đặt trước (FOUC) có thể bạn nên giải quyết vấn đề này. Xem tại đây: http://stackoverflow.com/questions/3221561/need-help-eliminating-flash-of-unstyled-content-on-my-site/9823468#9823468 – andy

+1

Vài năm sau bữa tiệc nhưng CÓ, hãy nhìn vào câu trả lời tahdhaze09, bạn sẽ sử dụng "object [class^= 'hasparams']" – silver

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