J'utilise cela,
$("#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");
}
});
Tout fonctionne bien, mais ce qui se passe est quand le signin_menu1
Est affiché bloc et je clique sur mon bouton de la souris à l'intérieur du DIV DIP DIGLESUP ... Je veux que la fonction MouseUp soit empêchée lorsque le signin_menu1
Est affiché. bloquer. Alors j'ai pensé à changer de condition comme,
if(($(e.target).parent("a.loginanchor1").length==0) &&( //check the display of the div)
Maintenant comment vérifier l'affichage?
essayer
$(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");
}
});
Je suis confondu avec le problème, mais $("#signin_menu1").is(':visible')
Vérifiez si la div est visible (Affichage: Bloc).
Ajout de notes :
vous pouvez essayer de vérifier si la fonction $(e.target)
est le signin_menu1
ou le code est à l'intérieur signin_menu1
. fais-le comme ça,
$(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");
}
});
Vous pouvez utiliser JQuery's : visible pour cela.