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

如何在$(document).keyup事件中正确使用jQuery的$(this)

问题原因

你把keyup事件绑定在了document上,所以事件处理函数里的$(this)指向的是document对象,而document本身没有id属性,自然输出undefined。

解决方案

有两种常用的处理方式:

方式一:直接绑定到input元素

如果只需要监听input的键盘事件,直接把事件绑定到input选择器上,此时$(this)就会指向触发事件的input元素:

$('input').keyup(function(e) {
  console.log($(this).attr('id'));
});

方式二:通过事件对象获取触发元素(必须绑定document时用)

如果一定要把事件绑定在document上(比如动态生成的input需要事件委托),可以通过事件参数e的target属性拿到实际触发事件的DOM元素,再转成jQuery对象操作:

$(document).keyup(function(e) {
  // 先过滤只处理input元素的事件
  const $target = $(e.target);
  if ($target.is('input')) {
    console.log($target.attr('id'));
  }
});

补充说明

  • e.target是原生DOM节点,用$(e.target)包装后就能使用jQuery的attr()等方法
  • 如果需要区分事件委托中的绑定元素和触发元素,e.currentTarget会指向绑定事件的元素(这里就是document),而e.target始终是实际触发事件的那个元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:32:03