Javascript 如何在事件上访问模板的dom元素?
如何访问meteor Template.name.events中的模板元素? 这是一个简单购物车的例子, 购物车中无法访问“数量” 模板Javascript 如何在事件上访问模板的dom元素?,javascript,meteor,Javascript,Meteor,如何访问meteor Template.name.events中的模板元素? 这是一个简单购物车的例子, 购物车中无法访问“数量” 模板 <div class="col-sm-3"> {{name}} </div> <div class="col-sm-3"> ${{cost}} </div> <div class="col-sm-3"> <input type="number" class="qty" l
<div class="col-sm-3">
{{name}}
</div>
<div class="col-sm-3">
${{cost}}
</div>
<div class="col-sm-3">
<input type="number" class="qty" length="3" min="1" max="5">
</div>
<div class="col-sm-3">
<button class="btn btn-success add">Add</button>
</div>
在Meteor中,
此
参数引用触发事件的元素的数据上下文。看见不要与jquery事件中的混淆,例如,它是对调用的DOM元素的引用。因此,您可以访问每个产品的名称
、id
和成本
。
如果需要输入值,一种方法是使用表单并发送整个表单,或者将模板实例传递给事件并在其中查找,如下所示
Template.productsList.events({
'click .add': function (event, template) {
var qty = template.find('.qty').value;
console.log(qty);
}
但是,我必须提到的是,这将遍历模板并找到类“qty”的第一个元素,对于具有相同类的多个元素的情况,这将无法实现您的目标。在您的情况下,您应该使用唯一Id。
你可以这样做
<input type="number" class="qty" id="product_{{id}}" length="3" min="1" max="5">
事实上。应该这样做。让我知道它是否适合你
<input type="number" class="qty" id="product_{{id}}" length="3" min="1" max="5">
var qty = template.find('#product_'+this.id).value;