0

クラス「hidden」を取得してからX時間オブジェクトを削除するスクリプトに問題があります。

selector = getselector($(this).parent().parent());
console.log("Clicked Cancel");
$(this).parent().parent().addClass('hidden');
setTimeout(function() {
    $(selector).remove();
}, 400);

$(this)はsetTimeout内で機能しないため、ここからスクリプトの一部を編集して関数getselectorを作成しました。これで、このコードは、再度実行する速度が速すぎない限り、機能します。問題は、タイムスパン(現在は400ms)内に別のノードが削除されると、変数セレクターが台無しになることのようです。

そして、私はそれを回避する簡単な方法を考えることができません。:(

4

3 に答える 3

1

答えは簡単です。selectorグローバルにしないでください。つまり、を使用してくださいvar。ああ、セレクターを作成する代わりに、要素を保存するだけです。

var elem = $(this).parent().parent();
elem.addClass('hidden');
setTimeout(function() {
    elem.remove();
}, 400);
于 2012-05-25T17:40:32.457 に答える
1

次の方法で削除をキューに入れることもできます。これにより、コードが少しスパイシーになります。

$(this).parent().parent().addClass('hidden').delay(400).queue(function() {
   $(this).remove();
});
于 2012-05-25T17:45:32.733 に答える
-1

プロセスの開始時に値がtrueの変数を設定します。アクションでは、falseでないかどうかを確認し、falseに設定して、終了したらtrueに戻します。クリックが速すぎると、変数がチェックされ、それが再びtrueであることが確認され、アクションが再度実行されます。

于 2012-05-25T17:41:23.313 に答える