我使用tis代码:
$(document).bind('click', function(e) {
if(!$(e.target).is('#paybox')) {
$('#paybox').hide();
}
});
当用户点击#paybox
以外的任何地方时,隐藏#paybox
。
但是当我点击" radio"形式:
<div id="paybox">
<table width="100%">
<tr>
<form method="post" action="">
<td>
<input type="radio" name="dauer" value="small" checked>
</td>
<td>
<input type="radio" name="dauer" value="mid">
</td>
<td>
<input type="radio" name="dauer" value="big">
</td>
</form>
</tr>
</table>
</div>
在#payboy
内,然后隐藏#payboy
!
我该如何防止这种情况?
答案 0 :(得分:3)
您应该检查您的点击是否在收款箱内。这样的事情应该有效:
$('body').on('click', function(e) {
if($(e.target).closest('#paybox').length === 0) {
$('#paybox').hide();
}
});
所以这只会隐藏#paybox
元素,如果点击既不在paybox上,也不在#paybox
元素内的任何节点上。
答案 1 :(得分:1)
您可以使用closest
或parents
进行检查,如下所示
$(document).bind('click', function(e) {
if(!$(e.target).is('#paybox') && $(e.target).closest('#paybox').length === 0) {
$('#paybox').hide();
}
});
#paybox {
background-color: gray;
height: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="paybox">
<table width="100%">
<tr>
<form method="post" action="">
<td>
<input type="radio" name="dauer" value="small" checked>
</td>
<td>
<input type="radio" name="dauer" value="mid">
</td>
<td>
<input type="radio" name="dauer" value="big">
</td>
</form>
</tr>
</table>
</div>
答案 2 :(得分:0)
你可以检查目标是否是div的孩子
// if target is not paybox and is not child of paybox
$(document).bind('click', function(e) {
if(!$(e.target).is('#paybox') && !$(e.target).parents('#paybox').length) {
$('#paybox').hide();
}
});