函数在委托事件和普通绑定事件执行问题

clipboard.png
代码如下:

    $(".password").on("keydown", function(e) {
        if (e.keyCode === 13 && !e.ctrlKey) {
            e.preventDefault();
            $('.loading-btn').click(denlu());
        }
    })
    $(".loading-btn").click(function(){denlu()});

如果$(".loading-btn").click(function(){denlu()});写成$(".loading-btn").click(denlu());页面刷新会直接执行,但是在$(".password").on("keydown", function(e) {})里面却不会,为什么呢?请指教Thanks♪(・ω・)ノ

阅读 1.4k
1 个回答

首先要先理解 jQuery 事件方法:
事件方法会触发匹配元素的事件,或将函数绑定到所有匹配元素的某个事件。

结合你的代码
触发:

$('.loading-btn').click(denlu());

绑定函数:

$(".loading-btn").click(function(){denlu()});

如果触发的情况下,没有放在某个操作的回调(函数)中,在读取到当前代码行的时候就会触发,故
$('.loading-btn').click(denlu());会立即触发$('.loading-btn').click,
所以click()中denlu()也会作为函数表达式语句执行。

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