2011-08-18 30 views
14
<div id="chatCenterMembers"> 
    <div class="chatmember"> 
     <a title="Blah Blah Blah"> 
      <div class="newchatmessage" style="display: block;"></div> 

Làm cách nào tôi có thể nắm bắt div hiển thị trong câu lệnh if?jQuery nếu hiển thị

Tôi có $(this) được đặt thành <div class="chatmember"> - dòng thứ hai từ trên cùng.

Tôi đã làm việc với bên dưới nhưng hiện đã có may mắn.

if($(this+' a div.newchatmessage').filter(":visible")) { 

Trên chỉ rơi ra ...

Tôi cũng đã thử dưới đây và nó không hoạt động hoặc

if ($(this + 'a div.newchatmessage').is(':visible')) { 
+0

Div ở đâu với lớp 'newchatmessage'? – Shef

+0

@ Wesley bạn có thể đúng ... nhưng 'this' có thể không phải là biến jQuery, vì vậy tôi giả sử' $ ('a div.newchatmessage', $ (this)) ' –

+0

Rất tiếc, đã xóa nhận xét của tôi quá sớm, tôi dường như nhớ bằng cách sử dụng cú pháp đó trước nhưng tôi không chắc chắn. –

Trả lời

11

.is()

đối với bất kỳ thông tin chi tiết về phương pháp này , chỉ cần cuộn xuống một chút ... có một loạt các ví dụ!

chỉnh sửa (cảm ơn cho gợi ý @Wesley Murch): nếu điều này không làm việc, chọn của bạn có thể là sai ... $(this+' a div.newchatmessage') trông khá kỳ lạ ... nó có thể thay được $('a div.newchatmessage', this) hoặc $('a div.newchatmessage', $(this)) tùy thuộc vào this là một jQuery -variable hay không

+0

xin lỗi - tôi sẽ sử dụng điều đó trong câu lệnh if như thế nào? – Adam

+0

Tôi nghĩ rằng anh ta có nghĩa là bạn nên sử dụng '.is()' thay vì '.filter()'. – JJJ

+5

Thêm ví dụ nhỏ của riêng bạn luôn hữu ích, hãy xem George trả lời. –

48

Sử dụng .is() để kiểm tra xem một yếu tố đầy một yêu cầu nhất định, như ví dụ:

if ($(this).find('a div.newchatmessage').is(':visible')) 

hoặc, nếu bạn muốn nó dễ đọc hơn:

012.
var element = $(this).find('a div.newchatmessage'); 

if (element.is(':visible')) { 
    // Do your thing 
} 
0

Tôi chạy vào một tình huống tương tự và muốn lưu ý rằng bạn nên cảnh giác với bộ chọn jquery trả về nhiều hơn một phần tử. Tôi tin rằng kiểm tra .is (': visible') sẽ chỉ đánh giá phần tử đầu tiên trong mảng. Bạn có thể kiểm tra xem tất cả các phần tử được bộ chọn đó trả lại có hiển thị với một cái gì đó như thế này hay không.

if($('.someElementWithThisClass:visible').length > 0){ 
    //Do it to it 
} 
Các vấn đề liên quan