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

AngularJS中ng-if内textarea的jQuery keyup事件失效问题

问题原因分析:ng-if/ng-show内textarea无法触发jQuery keyup事件

核心原因:DOM动态渲染与事件绑定时机不匹配

你的jQuery事件绑定代码是在页面初始加载阶段执行的:

$('textarea').on('keyup', function (e) {
    const elem = document.getElementById(this.id)
    ...
});

此时:

  • 普通textarea在页面初始化时就已存在于DOM中,jQuery能正常选中并绑定事件,所以触发正常。
  • 被ng-if控制的textarea,因为初始vm.showElement为false,AngularJS不会将其渲染到DOM里,jQuery选择器$('textarea')根本找不到这个元素,自然无法完成事件绑定。
  • 对于ng-show控制的textarea,虽然它始终存在于DOM中(只是通过CSS隐藏),但如果你的绑定代码执行时,该元素还未被AngularJS渲染完成(比如依赖异步数据加载后才初始化),同样会出现选择器无法命中、事件绑定失败的情况。

补充:ng-if与ng-show的DOM处理差异

  • ng-if是直接添加/移除DOM元素:当vm.showElement变为true时,AngularJS才会动态创建该textarea的DOM节点,但此时你的事件绑定代码早已执行完毕,不会自动为新创建的元素绑定事件。
  • ng-show是CSS控制显示隐藏:元素自始至终存在于DOM,但如果绑定时机早于元素渲染完成,同样会出现绑定失效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:55:40