0

次のようなコードブロックがあります。

function funcName() {
    if(isOverlap("#obj1", ".obj2") == true) {
        doThisFunc(".obj2");
    }
}

function isOverlap(obj1, obj1){
    //check to see if objects overlap, returns true if so
}

function doThisFunc(obj1){
    counter++;
    $(obj1, this).remove();
}

しかし、これは削除しようとしているクラスの特定のインスタンスを削除するわけではなく、実際には何も削除しません。この状況でセレクター コンテキストが有効でない理由と、重複している 1 つのインスタンスのみを削除する方法を説明していただけますか? たぶん と を使用.on()してい.trigger()ますか?(これらが何をするのかはまだはっきりしていません)

編集: これはプロジェクトへのリンクです。if ステートメントは、JavaScript セクションの 157 行にあります。「doThisFunc」は、実際getCoin(obj1)には同じセクションの 180 行目から見つかります。ベガのレメディーを使おうとしたけど効かなかった

4

1 に答える 1

3

関数内のthis参照はオブジェクトになります。関数を呼び出すときにコンテキストを維持していません。コンテキストを維持するために、ハンドラーから外部関数を呼び出すときにorを使用します。doThisFuncwindow.call.apply

doThisFunc.call(this, ".obj2");
于 2013-03-12T19:25:32.877 に答える