javascript - jQuery - 检查目标是否是特定的 div
问题描述
$(document).ready(function (){
$(".closebox").click(function(){
$('#uploadbox').hide();
$('#lightbox').hide();
$('#deniedbox').hide();
$('#confirm_delete_box').hide();
}).children().click(function(e) {
console.log(e.target.id); // I get "previewHolder" and "filePhoto" in the console
if($(e.target).is('#previewHolder')){
console.log('yes');
return false;
}else{
console.log('nope');
return false;
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="uploadbox">
<tr>
<td align="center" valign="middle" style="height: 100%;" class="closebox">
<div style="background-color: white; border-radius: 8px; padding-top: 12px; display: inline-block; -webkit-box-shadow: 0px 0px 20px 0px rgba(0,0,0,1); -moz-box-shadow: 0px 0px 20px 0px rgba(0,0,0,1); box-shadow: 0px 0px 20px 0px rgba(0,0,0,1);">
<div style="margin: 20px; margin-top: 25px; margin-bottom: 25px; line-height: 6px; max-height: 800px; overflow: auto;" id="upbox">
<input type="file" name="filePhoto" value="" id="filePhoto" accept=".jpg,.jpeg,.png,.gif" data-errormsg="Something went wrong" style="display: none;">
<div id="upload_title_afterview" style="font-size: 22px; padding-bottom: 20px; padding-top: 6px; color: #404040; text-align: left; max-width: 500px; line-height: 26px; display: none;"></div>
<img src="<?php echo $domain; ?>/style/upload_background.jpg" id="previewHolder" style="max-width: 498px; max-height: 100%; margin-bottom: 10px; border: solid 1px #C0C0C0; cursor: pointer;" onclick="choose_image();"/>
<br>
<div id="upload_error" style="width: 100%; text-align: left; color: #FF6600; font-size: 18px; margin-top: 15px; margin-bottom: 15px; display: none;">
</div>
</div>
</div>
</td>
<tr>
</table>
我从jQuery check if target is link得到这个,在有人将其标记为重复之前,这些解决方案都不适用于我的具体情况。
我需要找出#previewHolder
是否点击了这个代码,并且使用此代码,这两个条件都为真,所以我在控制台中得到了nope
和。yes
我猜是因为.closebox
有多个孩子。我该如何解决这个问题?
这就是整个想法:当用户单击 .closebox 时,我希望隐藏所有 div,除非他单击子元素,但是我希望在子元素为 #previewHolder 时触发一个函数
解决方案
click(function(e){
if($("#previewHolder").is(e.target)){
console.log("yes");
}
else {
console.log("nop");
}
});
"#previewHolder"
只是一个字符串。
推荐阅读
- javascript - 如何在反应js中将状态传递给选择表单的defaultValue
- node.js - 无法在节点 js 中使用 passport-ldapauth 从 ldap 服务器获取用户组和用户属性
- azure - 在 Azure Pipeline 中登录 Azure 容器注册表
- ios - UIImageJPEGRepresentation() 如何工作
- json - XSLT 属性名称操作
- python - 无法打印 Python pyo
- spring - 所有 Spring 微服务的重复配置代码问题
- networking - Podman:对 podman config.json 所做的更改不会在容器启动时持续存在
- reactjs - 能够对 fetch() 响应进行 data.map 但在数组上
- unit-testing - 如何在 Flutter 中对依赖于 3rd-Party-Package 的代码进行单元测试?