dart - Dart,将 onClick 事件添加到动态添加的元素
问题描述
存在可以动态添加元素的页面,当前添加元素时也会添加点击事件。
//something triggers an element to be added
ButtonElement statusButton = ButtonElement();
statusButton.className = 'status';
statusButton.onClick.listen(doSomething);
div.children.add(statusButton);
这很好用,但我更愿意为所有未来的元素添加一个单击事件。
我尝试了以下但没有成功。
ElementList<ButtonElement> statusButtons;
statusButtons = div.querySelectorAll('.status');
statusButtons.onClick.listen(doSomething);
如何使用 querySelectorAll 将侦听器添加到动态添加的元素?
我是从 jquery 背景来解决这个问题的,所以在 Dart 中添加大量事件到单个元素的问题可能不是这样的问题,如果是这样,是否有推荐的方法来编写上述代码?我宁愿让听众分开。
解决方案
你可以尝试这样的事情:
void addClickEvents() {
ElementList<ButtonElement> statusButtons = querySelectorAll('.status');
for (ButtonElement button in statusButtons) {
String dataListener = button.getAttribute('data-listener');
if (dataListener != 'true') {
button.setAttribute('data-listener', 'true');
button.onClick.listen(printBtnName);
}
}
}
在 DartPad 上试用:https ://dartpad.dartlang.org/9221358f0ca1e73acc9d5dfc770ba443
推荐阅读
- r - 使用 map_dbl 提取嵌套列表中的第 n 个值
- airflow - 如何使用 Google Cloud Composer CLI 设置 AWS 凭证?
- reactjs - React 尝试使用 redux 制作侧边栏
- c++ - 在 QFile 中写入文本
- sql - 在 T-SQL 的性能方面,什么更好?内部 + 子查询还是内部 + 虚拟表?
- java - 如何使用 iText 复制内容并将其放入新创建的 pdf 中
- firebase - Firebase 性能监控可用于监控单个 API 调用端点,还是仅监控整个 URL?
- apache - 使用 nutch 0.9 创建搜索引擎的问题
- python - 在自定义运算符中使用多处理
- php - 在 PHP 中将 MySQL 查询的结果操作成所需的 JSON 结构