Jquery with Meteor仅适用于第一个Element

时间:2015-08-10 23:00:36

标签: jquery meteor

我有一个模板助手,除了第一个元素之外我无法继续工作。在第一个元素上,一切都按预期完成。

Template.placecardsnot.events({
    'change .browser-default': function(event) {
        var selectedTable = $('.tablesassignments :selected').val();
        var table = tables.findOne(selectedTable);
        console.log(table.description);
        placecards.update(this._id, {
            $set: {      
                newtable: selectedTable, table: table.description
            }
        });
    }
});

如何在此模板中使用.each?我似乎无法正确获得Meteor Jquery的情况。

我的HTML看起来像这样:

<template name="placecardsnot">
      {{#each placecardnotassigned}}
             <b> {{name}} </b>
               <select class="browser-default tablesassignments" id="{{_id}}">
                    <option value="">Assign Table</option>
                    {{> tablenotassigned }}
               </select>
     {{/each}}  
</template>

我有第二个模板,为每个选择选项生成下拉选项。

<template name="tablenotassigned">
{{#each table}}
<option class="optionvalue" value="{{_id}}">{{description}}</option>
{{/each}}
</template>

所有的说法和完成,我有大约20个下拉选项并拥有相同的类,每个都有一个唯一的ID(来自集合)。当我尝试更改第二个

1 个答案:

答案 0 :(得分:0)

这不起作用。您的jquery选择器将始终选择第一个元素。您需要使用event.target首先在当前元素的DOM中查找子树。试试这个:

    var selectedTable = $(even.target).find('.tablesassignments :selected').val();

或者您可以重新构建模板,并为each的正文设置单独的模板。然后,您可以将事件处理程序附加到该模板,只需使用

    var selectedTable = this.$('.tablesassignments :selected').val();