2009-03-28 25 views
8

Tôi đang làm việc trong Adobe AIR, và tôi có một danh sách các div đó cho thấy mở rộng thông tin cho mỗi mục trong một div ẩn trên một nhấp chuột - giống như vậy:jQuery Toggle - bất kỳ cách nào để biết được (ẩn hoặc hiện) đang được áp dụng?

$(this).click(function(){ 
$(this).next('div.info').toggle(); 
}); 

này mở rộng chiều cao của toàn bộ ứng dụng, vì vậy cuối cùng, nếu người dùng đã mở rộng tất cả các div, sẽ có một thanh cuộn ở bên cạnh. Để giải quyết vấn đề này, tôi muốn điều chỉnh độ cao của cửa sổ (hoặc đang tăng hoặc thu hẹp, tùy thuộc). Tôi có tất cả các mã làm việc, ngoại trừ tôi không thể tìm ra cách để có được bên trong các chức năng .toggle để tìm ra hiệu ứng (ẩn hoặc hiển thị) sẽ được áp dụng. Đặt câu lệnh if() của tôi thành khóa ở trạng thái kết thúc của div thông tin không hoạt động, vì nó đánh giá div ngay lập tức trên lần nhấp.

Có cách nào để biết .toggle đang được áp dụng trong jQuery để tôi có thể sử dụng thay đổi trạng thái đó để áp dụng các thay đổi khác của tôi không?

Trả lời

11

Sau khi chuyển đổi xong, bạn có thể biết được div được toggled:

var visible = $(this).next('div.info').toggle().is(":visible"); 
if(visible){ 
    alert("Hey! I've just showed up here!"); 
} 

Bằng cách đó bạn sẽ biết nếu các hoạt động chuyển đổi gần đây cho thấy các div hay không.

+0

Điều này sẽ không hoạt động kể từ .is ('hiển thị') khớp với các thẻ * có tên * "hiển thị". Bạn cần sử dụng bộ chọn giả CSS ': hiển thị'. –

+0

@mgood Đó là lỗi đánh máy. Sửa chữa ngay bây giờ, cảm ơn :) – Seb

+2

điều này sẽ không hoạt động nếu .toggle ('chậm') đang được sử dụng. – exiang

7

Bạn có thể kiểm tra điều này với:

if ($(selector).is(':visible')) { 
    // do something 
} 
Các vấn đề liên quan