为什么'这个'在我的Meteor活动中没有像我期望的那样工作?

时间:2015-09-25 14:55:37

标签: jquery meteor this

在我的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();

......但它不起作用;然而,&#34;这个&#34;在像这样的jsfiddle测试用例中工作得很好:

$('#abler').click(function () {
    var enableCount = 5;
    $('.d1s1j1').attr('disabled', 'disabled').slice(0, enableCount).removeAttr('disabled');
});

所以给出了什么 - 这不是这个,或者这是什么?

2 个答案:

答案 0 :(得分:3)

在Meteor中,事件处理程序中的this变量引用元素出现的数据上下文。在您的情况下,元素位于{{#each}}手柄帮助器中,因此this变量将引用workers数组的单个元素。

如果要使用jQuery访问发生事件的元素,可以使用:

$(event.currentTarget).val();

答案 1 :(得分:1)

如果您想获取当前目标数据,您的活动应如下所示。

Template.tblScheduler.events({
  'change #date1Shift1JobLoc1Count': function(event) {
     var enableCount = $(event.currentTarget).val();
   }
});