0

次の jQuery アニメーションで dom 要素を削除します。

        var $id = $(this._id); // id of a dom element
        $id.animate({
            width:          "10vw",
            fontSize:       "0.33vw",
        }, 300, "swing", function() {
            $id.remove();
        });

これはうまくいきます。しかし、私はそれを短くしたいと思って試しました:

        var $id = $(this._id); // id of a dom element
        $id.animate({
            width:          "10vw",
            fontSize:       "0.33vw",
        }, 300, "swing", $id.remove);

これはしません。なぜだめですか?それは同じだと思いました...

4

1 に答える 1

1

$id.remove関数ポインタ(私はそれらを関数参照と呼びます) はそのコンテキスト、つまりthis値を失います。つまり、remove()どのコレクションを操作すればよいかわかりません。

を渡してみてください$.proxy($.fn.remove, $id)。これは、 のコンテキストを使用して、jQuery のremove()メソッドを呼び出します$id$.proxy()のクロスブラウザ実装ですFunction.prototype.bind()

遭遇した問題を防ぐために、呼び出しが匿名関数でラップされているのもよく見られます。

于 2013-10-01T19:08:18.560 に答える