javascript - $("#time").on("click",aa(10)); 保存后自动运行(还未点击),再次点击事件失效
本文介绍了javascript - $("#time").on("click",aa(10)); 保存后自动运行(还未点击),再次点击事件失效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
<body>
<button type="text" id="time">按钮</button>
<script type="text/javascript">
function aa(x){
console.log(x);
}
//函数aa加了() 后会自动运行,并且绑定后的事件失效;不加()无法传递参数;
$("#time").on("click",aa(10));
</script>
</body>
问题描述:函数aa()在没有点击的情况下会自动运行,结束后,再点击事件失效。
解决方案
简单的方法,就是把你要执行的函数,直接写在匿名函数回调里。像这样:
$("#time").on("click", function(){
aa(10);
});
而如果想用.on()
函数直接写的话,你就必须了解事件对象这个东西,顾名思义,事件对象就是DOM在事件发生时,监听被激活后丢给事件处理程序的一个数据集合,比如常见的ev.target
啦ev.preventDefault()
什么的都是。而如果想调用自定义参数,则可以用event.data,另外传递自定义参数给处理程序需要这样按照.on( events [, selector ] [, data ], handler(eventObject) )
的语法来写(详情参考)。所以最后改成:
function aa(ev){
console.log(ev.data);
}
$("#time").on("click", 11, aa);
就可以顺利看到想要的结果了。
最后多说一句,其实如果不知道是用event.data
,也可以用console.table()
打印下对象,找到传进去参数的位置也一样能推导出这种写法的。
这篇关于javascript - $("#time").on("click",aa(10)); 保存后自动运行(还未点击),再次点击事件失效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文