我正在使用带有Meteor和Handlebars的Select2,我正在尝试动态添加Select2 <input type="hidden"
字段,以便与Select2一起使用。隐藏字段显示,但Select2注册它们。
HTML看起来像这样。
{{#each update.ingredients}}
<div class="ingredient">
<input class="quant span2" type="text" placeholder="Quantity" value="{{quantity}}"/>
<input class="unit span1" type="hidden" placeholder="Unit" value="{{unit}}"/>
<input class="ing" type="hidden" placeholder="Ingredient" value="{{ingredient}}"/>
</div>
{{/each}}
事件处理程序如下所示:
'click .addIngredient': function () {
$("#input_ingredients").append('<div class="ingredient"><input class="quant span2" type="text" placeholder="Quantity"/><input class="unit span1" type="hidden" placeholder="Unit"/><input class="ing" type="hidden" placeholder="Ingredient"/></div><br>');
}
创建页面时添加select2:
'click .add': function () {
$(".tags").select2({
tags: checkTags(),
tokenSeparators: [",", " "]
});
$(".ing").select2({
tags: checkIngredients(),
tokenSeparators: [",", " "]
});
$(".unit").select2({
tags: checkUnits(),
tokenSeparators: [","]
});
非常感谢任何帮助!!
答案 0 :(得分:7)
听起来你在页面加载时正在检测你的Select2元素,但这只会检测那时存在的那些元素。您需要检测在添加动态时动态添加的那些。
你可以试试这个:
'click .addIngredient': function () {
var $div = $('<div class="ingredient"><input class="quant span2" type="text" placeholder="Quantity"/><input class="unit span1" type="hidden" placeholder="Unit"/><input class="ing" type="hidden" placeholder="Ingredient"/></div>');
$("#input_ingredients").append($div).append('<br />');
$div.find('.tags, .ing, .unit').select2({ tags: checkTags(), tokenSeparators: [",", " "] });
}