You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery绑定的keyup事件处理函数内部调用自身?

解决你的两个函数调用问题

嘿,我来帮你搞定这两个问题,尤其是你给出的jQuery代码场景!

问题2:在给定的绑定函数内部调用自身

你现在的代码里用了$("input[name^=prdname]").trigger('keyup')来触发事件,但其实更直接高效的方式是把匿名函数抽成具名函数,这样就能在内部直接调用它,还能避免不必要的事件触发循环,刚好能解决你说的combogrid第二次才加载的问题。

修改后的代码如下:

$(document).ready(function(){ 
    // 先定义具名的事件处理函数
    function handlePrdnameKeyup(e){ 
        // some code 
        if($('#quick_error').val() == 0){ 
            $("#quick_error").val('1'); 
            // 直接调用自身,不用触发整个keyup事件
            handlePrdnameKeyup(e); 
            return false; 
        } 
        // 这里写加载combogrid的代码,现在第一次按键就能执行到啦
        // loadCombogrid(); 示例逻辑
    }

    // 绑定事件时使用这个具名函数
    $("input[name^=prdname]").bind('keyup', handlePrdnameKeyup); 
});

为什么这样改?

  • 原来的trigger('keyup')会触发所有绑定在该元素上的keyup事件,可能带来额外的性能开销或者意外行为
  • 直接调用具名函数更精准,只执行你需要的逻辑,第一次满足条件时就能进入函数执行加载逻辑,不会等到第二次按键

问题1:在函数内部调用通过bind绑定的函数

核心思路和上面一致:不要用匿名函数,把绑定的函数定义成具名函数,这样不管是绑定事件还是在函数内部调用,都能直接用函数名调用,代码可读性和维护性都更好。

如果因为特殊原因必须使用匿名函数(不推荐),可以用arguments.callee来引用当前函数,但要注意这个特性在严格模式下是被禁用的,示例如下:

$("someElement").bind('event', function(e){
    // 调用自身
    arguments.callee(e);
});

但还是强烈推荐具名函数的写法,没有兼容性隐患,逻辑也更清晰。

内容的提问来源于stack exchange,提问作者Madhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:30:43