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();
}

但这不会删除试图删除的类的特定实例,实际上它根本不会删除任何东西。你能向我解释为什么选择器上下文在这种情况下无效,以及一种只删除一个重叠的实例的方法吗?也许使用.on()and .trigger()?(我还不是很清楚这些是做什么的)

编辑: 是该项目的链接。if 语句位于 JavaScript 部分的第 157 行。“doThisFunc”实际上getCoin(obj1)是在同一部分的第 180 行开始的。我尝试使用 Vega 的补救措施,但我无法让它发挥作用

4

1 回答 1

3

函数中的this引用doThisFunc将是window对象。调用函数时,您没有维护上下文。从处理程序调用外部函数以维护上下文时使用.call或。.apply

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