选择器上下文并不总是有效的?

时间:2013-03-12 19:23:50

标签: jquery selector implementation

我有一段代码就是这样:

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().trigger()? (我不清楚这些做了什么)

编辑: Here是项目的链接。 if语句可以在JavaScript部分的第157行找到。从同一部分的第180行开始,“doThisFunc”实际上是getCoin(obj1)。我试图使用Vega的补救措施,但我无法让它工作

1 个答案:

答案 0 :(得分:3)

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

doThisFunc.call(this, ".obj2");