为什么 'this' 在我的 Meteor 事件中没有像我预期的那样工作?
Why does 'this' not work as I expect in my Meteor event?
在我的 Meteor 应用程序中,我有这个 HTML:
<select class="trabajar d1s1j1" id="d1s1w1" name="d1s1w1" disabled>
<option value="nothing">select someone</option>
{{#each workers}}
<option value={{w_emailaddr}}>{{w_firstname}} {{w_middlename}} {{w_lastname}} {{w_namesuffix}}</option>
{{/each}}
</select>
...还有这个 jQuery:
Template.tblScheduler.events({
'change #date1Shift1JobLoc1Count': function(event) {
var enableCount = $('#date1Shift1JobLoc1Count').val();
$('.d1s1j1').attr('disabled', 'disabled').slice(0, enableCount ).removeAttr('disabled');
}
});
我第一次尝试使用:
var enableCount = $(this).val();
而不是:
var enableCount = $('#date1Shift1JobLoc1Count').val();
...但它不起作用;然而,"this" 在像这样的 jsfiddle 测试用例中工作得很好:
$('#abler').click(function () {
var enableCount = 5;
$('.d1s1j1').attr('disabled', 'disabled').slice(0, enableCount).removeAttr('disabled');
});
那么是什么给了-这不是这个,还是这是什么?
在 Meteor 中,事件处理程序中的 this
变量指的是元素出现的数据上下文。在您的情况下,元素位于 {{#each}}
handlebars helper 中,因此 this
变量将引用 workers
数组的单个元素。
如果您想使用 jQuery 访问事件发生的元素,您可以只使用:
$(event.currentTarget).val();
如果您想获取当前目标数据,您的事件应该如下所示。
Template.tblScheduler.events({
'change #date1Shift1JobLoc1Count': function(event) {
var enableCount = $(event.currentTarget).val();
}
});
在我的 Meteor 应用程序中,我有这个 HTML:
<select class="trabajar d1s1j1" id="d1s1w1" name="d1s1w1" disabled>
<option value="nothing">select someone</option>
{{#each workers}}
<option value={{w_emailaddr}}>{{w_firstname}} {{w_middlename}} {{w_lastname}} {{w_namesuffix}}</option>
{{/each}}
</select>
...还有这个 jQuery:
Template.tblScheduler.events({
'change #date1Shift1JobLoc1Count': function(event) {
var enableCount = $('#date1Shift1JobLoc1Count').val();
$('.d1s1j1').attr('disabled', 'disabled').slice(0, enableCount ).removeAttr('disabled');
}
});
我第一次尝试使用:
var enableCount = $(this).val();
而不是:
var enableCount = $('#date1Shift1JobLoc1Count').val();
...但它不起作用;然而,"this" 在像这样的 jsfiddle 测试用例中工作得很好:
$('#abler').click(function () {
var enableCount = 5;
$('.d1s1j1').attr('disabled', 'disabled').slice(0, enableCount).removeAttr('disabled');
});
那么是什么给了-这不是这个,还是这是什么?
在 Meteor 中,事件处理程序中的 this
变量指的是元素出现的数据上下文。在您的情况下,元素位于 {{#each}}
handlebars helper 中,因此 this
变量将引用 workers
数组的单个元素。
如果您想使用 jQuery 访问事件发生的元素,您可以只使用:
$(event.currentTarget).val();
如果您想获取当前目标数据,您的事件应该如下所示。
Template.tblScheduler.events({
'change #date1Shift1JobLoc1Count': function(event) {
var enableCount = $(event.currentTarget).val();
}
});