3

我目前正在使用 Meteor 0.6.3

以下场景,使用 'id' 作为选择器,不起作用:

模板:

<template name="menu">
    <div>
        <button id="showmap" class="btn-primary">Show map</button>
    </div>
</template>

JS:

Template.menu.events({
  'click #showmap' : function () {
      alert("test");
  }
});

如果我使用 'class' 而不是 'id' 一切正常:

模板:

<template name="menu">
    <div>
        <button class="btn-primary showmap">Show map</button>
    </div>
</template>

JS:

Template.menu.events({
  'click .showmap' : function () {
      alert("test");
  }
});

我见过几个使用“id”作为选择器的例子。那么我可能做错了什么?

4

2 回答 2

2

我试过你的代码,它不像你说的那样工作。奇怪的是类选择器的事件也不起作用。但是,我添加了很多包,所以如果其中一个包干扰我也不会感到惊讶。

我在 SO 上找到了对一个非常相似的问题的回复: 在流星中设置简单事件

因此,如果尚未发布,您可能需要搜索错误报告并发布它。 https://github.com/meteor/meteor/issues

最好的解决方法可能是使用 class 作为选择器,然后测试event.currentTarget.id应该点击哪个元素的 id。

于 2013-06-05T17:49:41.813 回答
1

我使用属性。ID似乎对我也不起作用。例如:

<button data-do-something>
  Click Me
</button>


'click [data-do-something]': function(eventArgs, template){

}

属性的好处是您还可以为属性分配值,并将它们与事件一起使用。例如:

<button data-do-something="hello">
  Click Me
</button>


'click [data-do-something]': function(eventArgs, template){
    var data = eventArgs.target.getAttribute('data-do-something');
    if(data === 'hello') console.log('found hello!");
}
于 2015-08-08T23:12:45.410 回答