屏蔽所有事件

菜鸟在研究别人的代码,在测试一个功能,用上如下代码,来看下我点击的是什么元素

$(document).click(function(e) { // 在页面任意位置点击而触发此事件
console.log($(e.target));       // e.target表示被点击的目标
})

然而,其他都有输出,就有个区块元素在手机端单击并没有输出,在电脑端单击有正常输出,有什么代码可以拦截么?

忘记补充下代码了:

<ul id="d41d8cd98f00b204e9800998ecf8427e8bcbe7d8b5b2071f2a8093e3df942e36" data-name="AssetInfo[images][]" data-boxid="d41d8cd98f00b204e9800998ecf8427e8bcbe7d8b5b2071f2a8093e3df942e36" data-multiple="1">
    <li class="upload-box ">
        <i class="fa fa-cloud-upload"></i>
        <div class="upload-box-bg hide">
            <div class="upload-progress first">
                <span class="badge bg-green">0%</span>
            </div>
            <a class="second cancel">取消上传</a>
        </div>
    </li>
</ul>

TIM截图20191022111238.jpg
而且奇怪的是,红色外围框点击触发的事件console.log($(e.target))打印的是 li.upload-box,点击的是该审查元素的范围外的区域。
真是抓狂!
进展1---------------------------------
经过指导,使用了如下代码,手机端点击终于有反馈了

$(document).on('touchstart', fn)

但是还是有疑问,本例中,有些元素(如li,div)在手机端点击是能触发click事件的, 有些则要touchstart。点击子元素未触发父元素绑定的事件
新的待解决问题1---------------------------------
现在该解决为啥不弹出文件选择框了,代码如下

// 触发上传(移动版)
$(document).on("touchstart", ".upload-box", function (e) {
 let boxId = $(this).parent().attr('data-boxId');
  $('#upload-' + boxId + ' .webuploader-container input').trigger('click');//问题在这里,click换touchstart,也一样没反应
});

问题代码:手机端下,没有触发<input type=file /> 弹出文件选择框。请问如何写?

阅读 2.7k
1 个回答

手机端可能没有触发click吧。换mousedown试试,或者touchstart

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题