2010-09-23 38 views
11

Tôi đang sử dụng này,Làm thế nào để kiểm tra hiển thị (không có/khối) của một div trong jquery?

$("#loginanchor1").click(function (e) { 
    e.preventDefault(); 
    $("#signin_menu1").slideDown("slow"); 
}); 
$(document).mouseup(function (e) { 
    if ($(e.target).parent("a.loginanchor1").length == 0) { 
     //$(".signin").removeClass("menu-open"); 
     $("#signin_menu1").slideUp("slow"); 
    } 
}); 

Tất cả mọi thứ hoạt động tốt nhưng những gì xảy ra là khi signin_menu1 được hiển thị khối và tôi bấm nút chuột của tôi bên trong div div slidesup ... Tôi muốn chức năng MouseUp để được ngăn chặn khi các signin_menu1 được hiển thị khối. Vì vậy, tôi nghĩ đến việc thay đổi điều kiện như,

if(($(e.target).parent("a.loginanchor1").length==0) &&(//check the display of the div)

Bây giờ làm thế nào để kiểm tra màn hình?

Trả lời

16

thử

$(document).mouseup(function (e) { 
    var $parent = $(e.target).parent("a.loginanchor1"); 
    if ($parent.length == 0 && !$("#signin_menu1").is(':visible')) { 
     //$(".signin").removeClass("menu-open"); 
     $("#signin_menu1").slideUp("slow"); 
    } 
}); 

Tôi đang bối rối với vấn đề này, nhưng $("#signin_menu1").is(':visible') sẽ kiểm tra nếu div được hiển thị (display: block).

thêm ghi chú:

bạn có thể thử để kiểm tra xem $(e.target)signin_menu1 hoặc bên trong là signin_menu1. làm như thế này,

$(document).mouseup(function (e) { 
    if ($(e.target).is('#signin_menu1') || $(e.target).closest('#signin_menu1').length > 0) { return ; } // do nothing on mouseup 
    var $parent = $(e.target).parent("a.loginanchor1"); 
    if ($parent.length == 0) { 
     //$(".signin").removeClass("menu-open"); 
     $("#signin_menu1").slideUp("slow"); 
    } 
}); 
+0

hoạt động nhưng div không trượt lên khi tôi nhấp vào bên ngoài div – Mubeen

+0

tôi muốn ngăn sự kiện mouseup bên trong div – Mubeen

+0

xem ** ghi chú đã thêm: ** – Reigel

3

Bạn có thể sử dụng jquery's :visible cho việc này.

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