我遇到了这种情况: 我在html中创建了一个记录列表:
{{#each data}}
<i class="fa fa-fw fa-pencil-square-o btn-edit-ota" data-hotel-id="1"></i>
<i class="fa fa-fw fa-pencil-square-o btn-edit-ota" data-hotel-id="2"></i>
...
<i class="fa fa-fw fa-pencil-square-o btn-edit-ota" data-hotel-id="10"></i>
{{/each}}
我希望每次点击每个项目时,它都会写下&#34; hotel-id&#34;控制台日志中的该项目;所以,在js我创建:
'click .btn-edit-ota': function (event, template) {
var hid = $(event.target).data('hotel-id');
console.log(hid);
}
它工作正常,它显示&#39; 1&#39;在我点击第1个等等的控制台日志中&#39; 2&#39;第二,...
在js中,我有一个自动运行:
Template.myTemp.onRendered(function () {
var self = this;
self.autorun(function (computation) {
... //generate my list here...
}
});
所以每当我更改任何复选框或过滤器或当前页面时,自动运行都会运行,我会得到一个新列表。
这里的问题是当autorun运行时,我得到一个新列表。 例如:现在是:
<i class="fa fa-fw fa-pencil-square-o btn-edit-ota" data-hotel-id="11"></i>
<i class="fa fa-fw fa-pencil-square-o btn-edit-ota" data-hotel-id="12"></i>
...
<i class="fa fa-fw fa-pencil-square-o btn-edit-ota" data-hotel-id="20"></i>
我点击第一个,它显示&#39; 1&#39;在控制台日志中。 :((
它应该显示&#39; 11&#39;。因为HTML现在是: ... data-hotel-id =&#34; 11&#34;&gt; ,而不是 ... data-hotel-id =&#34; 1&#34;&gt; 。
我认为必须使用旧的数据/ html。 发生了一些奇怪的事情&#39;点击&#39;事件
$(event.target).data('hotel-id');
它没有获得新ID。
任何人都可以告诉我为什么会这样? 非常感谢。