所以这里有很多关于在你点击它之外隐藏div的问题。但我有一件事,有一个div(accounts-edit-table-name-edit),它首先显示隐藏的div(account-edit-group)。然后 - 如果我要点击div(account-edit-group)之外的其他地方 - 它必须隐藏。这是我的代码,我试图做两个不同的条件(OR):
$(document).click(function(event) {
if($(event.target).parents().index($('.account-edit-group')) == -1 || $(event.target).parents().index($('.accounts-edit-table-name-edit')) == -1)
{
if($('.account-edit-group').is(":visible"))
{
$('.account-edit-group').removeClass('acc-edit-f');
alert("hiding")
}
}
});
HTML:
<div class="accounts-edit-table-name-edit">"button"</div>
<div class="account-edit-group">block</div>
(“acc-edit-f”类只包含“display:block”)
好吧,如果我点击带有“accounts-edit-table-name-edit”类的div,系统会立即显示警告(“隐藏”),虽然它必须查看条件并忽略它。有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
那是因为parents
不包含第一个元素,即e.target
。
你可以做什么:
if(!$(event.target).closest('.account-edit-group, .accounts-edit-table-name-edit').length)
答案 1 :(得分:1)
如果你想要的话,请看jsfiddle:
$(event.target).parents().index($('.account-edit-group')) //always return -1
$(event.target).parents().index($('.accounts-edit-table-name-edit')) // this too
答案 2 :(得分:0)
尝试使用.hide()代替removeclass
$( ".account-edit-group" ).hide();
答案 3 :(得分:0)
以下是您的需求:
onclick
事件并隐藏所有子元素这是我为你写的一个工作案例:
$(document).click(function(event) {
var clickedElement = $(event.target);
if (clickedElement.hasClass('accounts-edit-table-name-edit') || clickedElement.parents().hasClass('accounts-edit-table-name-edit')) {
$('.account-edit-group').removeClass('acc-edit-f');
return false;
}else {
$('.account-edit-group').addClass('acc-edit-f');
}
});