jquery笔记:事件对象 event.currentTarget,event.data,event.delegateTarget,event.relatedTarget.......

本文详细介绍了jQuery中的事件对象,包括event.currentTarget、event.data、event.delegateTarget等属性的作用及使用方法,帮助开发者更好地理解和运用这些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

event.currentTarget

在事件冒泡阶段中的当前DOM元素

$("p").click(function(event) {
    alert( event.currentTarget === this ); // true  
}); 

event.data

当前执行的处理器被绑定的时候,包含可选的数据传递给jQuery.fn.bind。

$("a").each(function(i) {
    $(this).bind('click', {index:i}, function(e){
       alert('my index is ' + e.data.index);
    });
  });   

event.delegateTarget

当currently-called的jQuery事件处理程序附加元素。

此属性是最经常有用是通过过.delegate() 或.on()附加委派的事件,事件处理程序附加在正在处理的元素的祖先上。它可用于,例如,指明委派识别和删除事件处理程序。

$(".box").on("click", "button", function(event) {
  $(event.delegateTarget).css("background-color", "red");
}); 

event.relatedTarget

在事件中涉及的其它任何DOM元素。

对于 mouseout 事件,它指向被进入的元素;对于 mousein 事件,它指向被离开的元素。

$("a").mouseout(function(event) {
    alert(event.relatedTarget.nodeName); // "DIV"
  });  

event.result

这个属性包含了当前事件事件最后触发的那个处理函数的返回值,除非值是 undefined 。

event.target

最初触发事件的DOM元素。

这是注册事件时的对象,或者它的子元素。通常用于比较 event.target 和 this 来确定事件是不是由于冒泡而触发的。经常用于事件冒泡时处理事件委托。

event.timeStamp

这个属性返回事件触发时距离1970年1月1日的毫秒数。

event.type

事件类型。

event.which

针对键盘和鼠标事件,这个属性能确定你到底按的是哪个键或按钮。

event.which 将 event.keyCode 和 event.charCode 标准化了。推荐用 event.which 来监视键盘输入。




### 解决 `event.currentTarget.getBoundingClientRect` 不是函数的 TypeError 当遇到 `TypeError: event.currentTarget.getBoundingClientRect is not a function` 错误时,这通常意味着当前事件的目标对象不支持该方法。为了确保代码能够正常工作并处理可能的情况,可以采取以下措施: #### 1. 验证目标元素类型 并非所有的 DOM 节点都实现了 getBoundingClientRect 方法。因此,在调用此方法之前验证节点类型是一个好习惯。 ```javascript if (event.currentTarget instanceof HTMLElement) { const rect = event.currentTarget.getBoundingClientRect(); } ``` 这段代码通过检查 `currentTarget` 是否为 HTML 元素实例来防止错误发生[^1]。 #### 2. 使用 try-catch 结构捕获异常 另一种方式是在尝试访问属性前使用 try-catch 块包裹潜在危险的操作,从而优雅地处理任何可能出现的问题而不中断程序执行流程。 ```javascript try { const rect = event.currentTarget.getBoundingClientRect(); } catch (error) { console.error('Failed to call getBoundingClientRect:', error); } ``` 这种方法允许应用程序继续运行即使遇到了未预期的行为或状态变化[^2]。 #### 3. 添加默认行为作为回退方案 如果确实需要获取边界矩形但是又不确定是否能成功,则可以在失败的情况下提供合理的替代选项。 ```javascript function safeGetBoundingClientRect(element) { return element && typeof element.getBoundingClientRect === 'function' ? element.getBoundingClientRect() : { top: 0, left: 0, width: 0, height: 0 }; } const rect = safeGetBoundingClientRect(event.currentTarget); ``` 这里定义了一个辅助函数用于安全地取得边界框数据;如果没有找到有效的方法实现则返回一组预设值[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值