2012-02-03 38 views
17

Tìm kiếm một giải pháp trường hợp chung để xác định xem có bất kỳ hộp thoại jquery nào (có nhiều) hiện đang mở hay không. Đã thử:Làm thế nào để biết nếu có hộp thoại jquery nào sẽ mở ra?

$(".ui-dialog-content").dialog("isOpen") === true 
$(".ui-dialog").dialog("isOpen") == true 
$(document).dialog("isOpen") == true 
$("*").dialog('isOpen') == true 

không thành công. Tôi mong đợi ".ui-thoại-nội dung" để làm việc, vì tôi dường như có thể đóng bất kỳ hộp thoại mở với bộ chọn đó, nhưng nó không.

Trả lời

28

bạn có thể thử

if($(".ui-dialog").is(":visible")){ 
//dialog is open 
} 
+2

đã cố gắng này - nó hoạt động – Alnitak

+0

Một cái gì đó phải được thực sự kỳ lạ với các phong cách trên trang này sau đó. Trong giao diện điều khiển firebug trong khi một hộp thoại được mở: $ ('. Ui-dialog'). ("Visible") == false – lamont

+1

@lamont - lưu ý dấu hai chấm ở phía trước ': visible' - đó là một bộ chọn psuedo. – Alnitak

0

Kiểm tra xem nó có đang được hiển thị hay không thông qua CSS? Không chắc đó có phải là cách tiếp cận đúng hay không, nhưng tôi nghi ngờ nó sẽ hoạt động.

$(".ui-dialog").css('display') != "none" 
+0

EDIT:.! Thực $ ("ui-thoại-content") css ('display') = "none" đưa ra một dương tính giả nếu hộp thoại được đóng lại, nhưng không trở thành sự thật khi nó mở, trong khi ".ui-dialog" dường như luôn luôn sai. – lamont

+0

>>> $ (". Ui-dialog-content"). Css ('display') "block" >>> $ (". Ui-dialog"). Css ('display') "none" bất kể trạng thái hộp thoại, ít nhất trong firefox. – lamont

+0

yeah đó là một phát bắn trong bóng tối, tôi đã không sử dụng ui-thoại, đã đi ra khỏi kiến ​​thức chung của tôi, có vẻ như bạn tìm thấy câu trả lời của bạn mặc dù vậy đó là tuyệt vời! – thenetimp

2

jQuery UI dailog có một phương pháp isOpen mà trả về true nếu dailog đang mở. Gọi nó trên phần tử đã mở hộp thoại.

$('.ui-dialog-content').dialog("isOpen"); 

refrence: http://jqueryui.com/demos/dialog/#method-isOpen

+1

xem câu hỏi của tôi - $ ('. Ui-dialog-content'). Dialog ("isOpen") trả về false khi hộp thoại mở. – lamont

+1

đã thử điều này - chỉ hoạt động cho hộp thoại đầu tiên trong lớp. Bạn cần sử dụng '.each()' để kiểm tra hộp thoại _any_. – Alnitak

+0

Tôi nghĩ rằng cần phải được chăm sóc bởi hộp thoại để chạy mỗi vòng lặp nội bộ. – ShankarSangoli

-1
$('html').click(function() { 
    x++; 
    if(x==2){ 
    $(".ui-dialog-titlebar-close").trigger("click"); 
    x=0; 
    } 
    }); 

Cái này sẽ làm việc trong mọi trường hợp, nơi bạn gọi Dialog từ DOM.

+0

Không trả lời qtn – PapillonUK

2

Theo tài liệu API, bạn nên sử dụng

$(".selector").dialog("isOpen") 

để xác định xem hộp thoại đang mở hay không. Hàm trả về một boolean. Ví dụ,

if($("selector").dialog("isOpen")===true){ 
    /*do stuff when dialog is open*/ 
} else { 
    /*do stuff when dialog is closed*/ 
}; 
Các vấn đề liên quan