在事件处理程序中,我需要确定单击的DOM元素。我希望使用jqEvent.target.attributes ['tag'],其中jqEvent的类型为JQueryEventObject。但是'target'在lib.d.ts中定义,类型为EventTarget,它不包含任何我可以使用的内容......
我错过了什么吗?
答案 0 :(得分:5)
我使用它并且它工作正常......
private funct(event: JQueryEventObject) {
var state = $(event.target).prop('checked');
}
答案 1 :(得分:1)
以下是EventTarget
的定义(在dom.generated.d.ts
中找到,与TypeScript一起分发):
interface EventTarget {
removeEventListener(type: string, listener: EventListener, useCapture?: boolean): void;
addEventListener(type: string, listener: EventListener, useCapture?: boolean): void;
dispatchEvent(evt: Event): boolean;
}
可能有其他类实现EventTarget
以附加事件,因此最安全的API定义是将Event.target
设置为实现附加侦听器的EventTarget
的对象。
在jQuery上下文中,Event.target
几乎肯定属于HTMLElement
类型(不是类型JQuery
,就像Andree的回答一样)。对于jqEvent.target.attributes['tag']
的示例,正确的方法是通知编译器它实际上是Node
({1}}的祖父对等接口),它具有HTMLElement
属性:
attributes
如果您明确访问更具体的界面的属性,则上述演员也可以是(<Node> jqEvent.target).attributes['tag']
。使用最通用的接口被认为是面向对象的最佳实践。
答案 2 :(得分:-1)
我认为这在宣言中实际上是一个错误。它应该是JQuery类型。但是可以通过Typescript构造
来投射<JQuery>(event.target)[0].attributes['id'];
或作为JQuery构造函数的参数
$(event.target)[0].attributes['id'];