1

我有一个函数,当我单击一个按钮时,它会将动态数量的数字推送到一个数组中,代码如下所示:

$('#calculate').click(function(e) {

var foo = $(".foo"),
    A = [],
    B = [];

    //Push values
foo.each(function(){
  var $t = $(this),
    num = $t.val(),
    xnum = num * 2.42;
  A.push(xnum);
  B.push(num);
});

//more stuff down here... 
//.ajax() to run and print a calculation

我从<select>菜单中获取这些值,然后我有一个按钮,<select>使用该功能删除它附带的菜单.empty()......

我在计算时遇到问题,然后删除其中一个<select>菜单并重新计算......删除的值<select>仍然包含在我的计算中!

我认为重置数组的最简单方法是使用:

A.length = 0;
B.length = 0;

但由于某种原因,这些并没有重置数组,旧值仍包含在新计算中......

在我开始将项目推入之前,有没有更好的方法可以完全清除阵列?

4

2 回答 2

1

试试这个

$(document).on("click", "#remove", function() {
    $this=$(this);
    $this.parent('.foowrap').fadeOut(function() {
        $this.parent('.foowrap').empty();
    });
});

更新:使用 class.remove而不是 id #remove, id 意味着是唯一的。

演示

于 2012-08-26T19:53:54.500 回答
1

我会将另一个答案修改为更像这样:

$(".remove").click(function() {
  $(this).parent('.foowrap').fadeOut(function() {
    $(this).empty();
  });
});

注意,它避免了两次调用parent和全局变量,并添加了缺少的分号。

编辑:看到您有 2 个相同的元素,id因此更改了我的代码以假设您将更remove改为class.

于 2012-08-26T20:00:07.623 回答