dart SDK中是否存在事件委派?
想象一下,您希望听到对页面上任何锚元素的所有单击。页面上的锚可以在页面生存期内动态添加/删除,并且您希望注册所有单击事件,即使是在新添加的页面上 有没有办法使用Dart的标准库在Dart中附加委派事件(如jQuery)dart SDK中是否存在事件委派?,dart,Dart,想象一下,您希望听到对页面上任何锚元素的所有单击。页面上的锚可以在页面生存期内动态添加/删除,并且您希望注册所有单击事件,即使是在新添加的页面上 有没有办法使用Dart的标准库在Dart中附加委派事件(如jQuery) 在jQuery中,可以使用element.on('click','selector',handler)实现这一点因为我没有找到可行的解决方案,所以我创建了支持委派的包 你可以在 代码很简单: 委托(父级、条件、处理程序){ 返回(事件){ var元素=event.target;
在jQuery中,可以使用
element.on('click','selector',handler)实现这一点代码>因为我没有找到可行的解决方案,所以我创建了支持委派的包
你可以在
代码很简单:
委托(父级、条件、处理程序){
返回(事件){
var元素=event.target;
while(元素!=parent&&element!=null){
if(条件(要素)){
处理程序(事件、元素);
}
element=element.parent;
}
};
}
delegateOn(父、字符串事件类型、条件、处理程序){
[eventType]上的parent.listen(委托(父级、条件、处理程序));
}
您现在可以这样做:
document.body.onClick.matches('.selector').listen((事件){
打印(“超级酷!”);
//事件的当前注册目标
//文件正文
event.currentTarget;
//CSS选择器匹配的元素
//.选择器
event.matchingTarget;
//事件最初调度到的目标
//实际元素在.selector下单击
事件目标;
});
遗憾的是,没有,我还在我们的应用程序中创建了一个helper方法,但真正的解决方案是在dart:html或Pub包中使用它,这很有趣。它到底是如何工作的?事件中的目标是什么?想象一下,在div class='selector'
中,有一些单击我代码>元素。现在我们可以对三种不同的元素感兴趣:i)body
我们正在收听的元素(这很容易获得),ii)我们正在匹配的选择器
元素,iii)
元素,它们确实收到了点击。以下哪一项将出现在事件中。target
?是否有可能以某种方式获得其他目标?我只是做了一个快速测试:e.currentTarget
指向文档。body
和e.target
指向单击我代码>。我认为您无法检索匹配.selector
的元素,因为可能有多个.matches
方法链接在一起。jQuery是如何处理的?在jQuery中,传递给委托事件处理程序的事件
对象有三个属性:事件。目标
–如果在Dart中无法获得与jQuery事件的等价物。currentTarget
,则会使委托功能变得非常不可用:-(现在有一个属性)。