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>メニューの 1 つを削除して再計算しました... 削除された値<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();
    });
});

更新:.remove id の代わりにclass を使用#removeします。id は一意であることを意味します。

デモ

于 2012-08-26T19:53:54.500 に答える
1

他の回答を次のように変更します。

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

parentグローバル変数の2 回の呼び出しを回避し、欠落しているセミコロンを追加していることに注意してください。

編集:同じ要素が2つあるのを見たidので、コードを変更して、に変更すると仮定removeしましたclass

于 2012-08-26T20:00:07.623 に答える