javascript - $("#time").on("click",aa(10)); 保存后自动运行(还未点击),再次点击事件失效
怪我咯
怪我咯 2017-04-11 12:00:34
[JavaScript讨论组]



问题描述:函数aa()在没有点击的情况下会自动运行,结束后,再点击事件失效。

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(4)
PHP中文网

$("#time").on("click",aa(10));变成了$("#time").on("click",undefined)了,所以点击事件失效;

改一下

function aa(x){
    return function(){
        console.log(x)
    }
}
PHPz

$("#time").on("click",function () {aa(10)});

ringa_lee

aa(10)为函数调用

jQuery on函数要求第2个参数为一个选择器或一个函数

正确的调用方式为:

$("#time").on("click",aa);
高洛峰

简单的方法,就是把你要执行的函数,直接写在匿名函数回调里。像这样:

$("#time").on("click", function(){
    aa(10);
});

而如果想用.on()函数直接写的话,你就必须了解事件对象这个东西,顾名思义,事件对象就是DOM在事件发生时,监听被激活后丢给事件处理程序的一个数据集合,比如常见的ev.targetev.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()打印下对象,找到传进去参数的位置也一样能推导出这种写法的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号