原生js通过dom的dispatchEvent函数,传入事件对象并派发事件。
jquery封装好了部分逻辑,直接通过trigger方法,传入事件类型就行。
所有派发的事件支持所有类型的事件。
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.addImg{
position:relative;
cursor: pointer;
display: inline-flex;
width: 80px;
height: 80px;
color:#ccc;
background:#eee;
justify-content: center;
align-items: center;
}
</style>
</head>
<body>
<div class="addImg">
<span>+</span>
</div>
<input type="file" accept="image" ref="uploadImg" id="fileupload1" style="display:none;" />
</body>
</html>
<script src="./jquery.3.2.1.min.js"></script>
<script>
//原生派发事件
document.querySelector('.addImg').addEventListener("click",function(){
var evObj = document.createEvent('MouseEvents');
evObj.initMouseEvent( 'click', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null )
document.querySelector("#fileupload1").dispatchEvent(evObj);
});
//jquery派发事件
$(".addImg").click(function(){
$('#fileupload1').trigger('click');
});
</script>