我的项目是C#MVC。
我有一个表,其最后一行包含带有“添加”按钮的下拉列表。单击“添加”按钮后,将通过JQuery将一行添加到表中。这很好。
添加的行的一部分是我要用来删除该行的“删除”按钮。
奇怪的是,JQuery没有拾取“删除”按钮的click事件。它与“添加”按钮完全相同,只是具有不同的ID。有人知道为什么会这样吗?下面的代码。
$('#AddBuyCondition').click(function () {
alert("abc");
var conditionID = +$("#BuyConditionList").val();
var conditionText = $("#BuyConditionList").find('option:selected').text();
$('#BCDropDownRow').before('<tr><td>' + conditionText + '</td><td><button id="RemoveBuyCondition" type="button" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-minus"></span></button></td></tr>');
});
$('#RemoveBuyCondition').click(function () {
alert("rbc");
});
您需要在此处使用事件委托,因为您的按钮已被动态添加到DOM:
事件委托使我们可以将单个事件侦听器附加到父元素,该元素将为与选择器匹配的所有子对象触发,无论这些子对象现在存在还是将来添加。
$('#BuyConditions').on('click', '#RemoveBuyCondition', function() {
alert("rbc");
});
因此,基本上,在您的情况下,事件委托将帮助您将click事件附加到动态添加的按钮元素上。
另外,为了防止重复id
,您应该使用class代替id
按钮。
......'</td><td><button type="button" class="RemoveBuyCondition btn btn-default btn-xs">......
然后您可以将jQuery代码更改为:
$('#BuyConditions').on('click', '.RemoveBuyCondition', function() {
alert("rbc");
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句