I am using this,
$("#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");
}
});
Everything works fine but what happens is when the signin_menu1
is displayed block and i click my mouse button inside the div the div slidesup... I want mouseup function to be prevented when the signin_menu1
is displayed block. So i thought of changing the condition like,
if(($(e.target).parent("a.loginanchor1").length==0) &&( //check the display of the div)
Now how to check the display?
try
$(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");
}
});
I'm confused with the problem, but $("#signin_menu1").is(':visible')
would check if the div is visible (display:block).
added notes:
you may try to check if the $(e.target)
is the signin_menu1
or the is inside signin_menu1
. do it like this,
$(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");
}
});