我目前正在使用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'作为选择器的例子。那么我可能做错了什么?
答案 0 :(得分:2)
我尝试了你的代码,它不像你说的那样工作。奇怪的是,类选择器的事件也不起作用。但是,我添加了很多软件包,所以如果其中一个软件包干扰我就不会感到惊讶。
我在SO上发现了这个非常相似的问题: Setting simple events in meteor
因此,您可能希望搜索错误报告并将其发布(如果尚未发布)。 https://github.com/meteor/meteor/issues
最好的解决方法可能是使用class作为选择器,然后针对event.currentTarget.id
进行测试,{{1}}应该点击该元素的id。
答案 1 :(得分: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!");
}