Как проверить отображение (нет / блок) div в 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");
}
});
Все работает нормально, но что происходит, когда signin_menu1
отображается блок, и я нажимаю кнопку мыши внутри элемента div. Слайды вверх... Я хочу, чтобы функция mouseup была отключена, когда signin_menu1
отображается блок. Так что я подумал об изменении условия, как,
if(($(e.target).parent("a.loginanchor1").length==0) &&( //check the display of the div)
Теперь, как проверить дисплей?
2 ответа
Решение
Пытаться
$(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");
}
});
Я запутался с проблемой, но $("#signin_menu1").is(':visible')
проверил бы, является ли div видимым (display:block).
добавленные заметки:
Вы можете попробовать проверить, $(e.target)
это signin_menu1
или внутри signin_menu1
, сделай это так,
$(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");
}
});