javascript - 当父 div 返回 false 时,文件输入的默认操作消失

标签 javascript html jquery css jquery-events

我有一个父 div,其中包含一个 input 元素,每次单击父 div 时,它都会返回 false

<div class="media-asset">
    <input  type="file" name="picture-label" >
</div>
$('body').on({
        click:function(){
            return false;
        }
},'.media-asset');

问题是当父div返回false时,一个文件input的默认 Action 没了,也不会提示用户上传文件。是否可以手动触发文件输入的默认操作?

$('body').on({
            click:function(){
                //manually trigger the file input
                return false;
            }
    },'.media-asset input');

我让父 div 返回 false 的原因是当用户在父 div 外部单击时,它会隐藏父 div >,当用户单击父 div 内部时,它不会隐藏自己。

最佳答案

无需手动触发。指定event.stopPropagation()'.media-asset input' 点击事件上,并从中删除 return false:

event.stopPropagation()

Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event.

event.stopPropagation() - jQuery API Documentation

$('body').on({
  click:function(){
    return false;
  }
},'.media-asset');

$('body').on({
  click:function(event){
    event.stopPropagation();
  }
},'.media-asset input');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="media-asset">
    <input  type="file" name="picture-label" >
</div>

关于javascript - 当父 div 返回 false 时,文件输入的默认操作消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32076110/

相关文章:

jquery - 我怎样才能摆脱 jquery 模式对话框上的关闭按钮

javascript - Backbone .js : body become undefined when loaded for the 2nd time (windows mobile)

javascript - 如何查询以相同ID开头的多个元素,然后检查输入是否发生变化

javascript - jQuery:将数组值分配给另一组元素

javascript - 为什么我在 Sequelize 中得到 "sequelize.literal is not a function"

html - 是否可以设置 html5 音频标签的样式?

html - svg 后面的一个按钮

database - 我可以在浏览器中使用数据库吗?

javascript - 如何使用 Rails API 管理我的 react 应用程序中的安全性?

javascript - 在具有预定义的父宽度和水平滚动的同一行上动态生成的 div