一般的浏览器事件(如点击)支持自定义事件,传递参数吗?
trigger除了能够触发浏览器事件,同时还支持自定义事件,
那么一般的浏览器事件(如点击)支持自定义事件 传递参数吗
trigger除了能够触发浏览器事件,同时还支持自定义事件,
那么一般的浏览器事件(如点击)支持自定义事件 传递参数吗
2016-09-18
trigger()传递的参数和一般的浏览器事件传递的参数在实质上完全不同
一般浏览器事件传递参数的形式:
function dome(event,args){ //参数args在这段代码中没有被使用 alert(event.data.name); //将匿名对象的name属性传递给了事件对象的data对象 alert(args); //因为没有传递该参数,窗口输出:undefined } $("div").on("click",{name:"使用event.data传递的参数:imooc"},dome); //div点击时触发
这里的参数{name:"imooc"},传递给了on事件本身(event)的data对象。
trigger()传递的参数的形式:(在上面的代码基础上增加如下代码)
function dome2(){ $("div").trigger("click","使用trigger传递的参数:imooc"); //传递参数【使用trigger传递的参数:imooc】 } dome2(); //弹出2次窗口,第一次是事件对象的data,第二次是trigger传递的参数【使用trigger传递的参数:imooc】
这里的【使用trigger传递的参数:imooc】是传递给形参args的参数。
总结:
一般浏览器事件传参,参数是传递给了事件对象的data对象;
trigger传参,参数是传递给事件调用函数的形参;
JQuery中on基本用法:.on( events [, selector ] [, data ] ),event可以为click,mouseover,mouseout,mousedown,mouseup等事件;
<body>
<h4>测试三</h4>
<div class="right">
点击触发:on(mousedown:fn1,mouseup:fn2)
<div id="test3"></div>
</div>
<script type="text/javascript">
//多事件绑定二
$("#test3").on({
mousedown: function(e) {
$(this).text('触发事件:' + e.type)
},
mouseup: function(e) {
$(this).text('触发事件:' + e.type)
}
})
</script>
</body>
举报