这是我的问题:如果我尝试擦除我用相对按钮推送的最后一个元素,一切正常,但如果我尝试擦除第一个(或至少不是最后一个),则数组中的所有元素被删除了。
为了避免这种情况,我使用$ .inArray检查元素是否在数组中,并且只删除该索引中的元素,但它没有帮助。
我想要的是能够删除我想要的元素,只删除我选择的元素。
$(document).ready(function() {
var array = [];
$('.add').click(function(e) {
var $thisEvent = $(e.currentTarget).closest('.event');
var i = $thisEvent.find('.i').text();
array.push(i);
console.log(i +' added, Array is now ' + array);
$thisEvent.append('<button class="remove">' + i + '</button>');
var $total = 0;
for (var y = 0; y < array.length; y++) {
$total += array[y] << 0;
}
$('.total').html('The sum of the elements in the array is ' + $total);
$('.remove').click(function() {
if ($.inArray(i, array) !== -1) {
array.splice($.inArray(i, array), 1);
console.log(i + ' removed, Array is now ' + array);
} else {
console.log('There is no ' + i + ' to remove from the array!');
}
$(this).remove();
var $total = 0;
for (var y = 0; y < array.length; y++) {
$total += array[y] << 0;
}
$('.total').html('The sum of the elements in the array is ' + $total);
});
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="event">
<span class="i" style="margin-right: 5px;">1</span><button class="add">Add to Array</button>
</div>
<br />
<div class="event">
<span class="i" style="margin-right: 5px;">2</span><button class="add">Add to Array</button>
</div>
<br />
<div class="event">
<span class="i" style="margin-right: 5px;">3</span><button class="add">Add to Array</button>
</div>
<p class="total"></p>
&#13;
答案 0 :(得分:0)
尝试更改
var $remove = $('<button class="remove">' + i + '</button>');
$thisEvent.append($remove);
要
$('.remove').click(function() {
然后改变
$remove.click(function() {
要
state:"RUNNING" OR state:"FAILED"
这样,每次添加新按钮时,您都不会向所有其他删除按钮添加新的点击事件监听器