1

如何获取当前 LIElement 的 id,它在 activeNav() 中触发事件 e,因为我想从 navMap 中找到活动元素。

import 'dart:html';

Map navMap = new Map<String, LIElement>();

void main() {
  navMap["#li-home"] =  query("#li-home");
  navMap["#li-about"] =  query("#li-about");
  navMap["#li-setting"] =  query("#li-setting");
  navMap["#li-home"].onClick.listen(activeNav);
  navMap["#li-about"].onClick.listen(activeNav);
  navMap["#li-setting"].onClick.listen(activeNav);
}

void activeNav(Event e){
  // Get element #li-home from map and add class "active"
  // remove the class "active" from remain LIElements in navMap
4

1 回答 1

3

您不需要将所有li元素存储在地图中。只需将事件处理程序附加到ul包含lis 的事件处理程序,找出li被单击的对象,然后添加或删除“活动”类:

import 'dart:html';

void main() {
  query('ul').onClick.listen((event) {
    if (event.target.id == 'li-home') {
      event.target.classes.add('active');
    } else {
      event.target.classes.remove('active');
    }
  });
}
于 2013-08-06T03:25:05.813 回答