jQuery blur事件监听器仅触发一次问题排查求助
问题根因
你代码中的事件绑定逻辑存在语法错误,直接导致了问题出现:
- jQuery事件绑定方法的回调参数需要接收函数引用,你在
func1、computeStuff后添加了括号,相当于代码初始化时就直接执行了这两个函数,将函数返回值(无return语句时为undefined)绑定给了事件,因此只会在页面加载时自动执行一次,后续事件触发时无对应回调可执行,自然不会响应。 - 额外补充:外层的
$(function(){})本身就是DOM加载完成的回调,不需要再额外调用$("#TheBody").ready()方法,属于冗余写法。
修复后的代码
$(function(){ // DOM加载完成后直接执行func1 func1(); // 绑定blur事件时仅传入函数名,不带括号,即传入函数引用 $("#data_box").on("blur", computeStuff); });
扩展场景:回调需传参的写法
如果你的computeStuff需要传入自定义参数,可以用匿名函数包裹:
$("#data_box").on("blur", function() { // 此处可传入自定义参数 computeStuff(param1, param2); });
内容的提问来源于stack exchange,提问作者Tomas Doherty
相关产品推荐
相关产品推荐

