代码之家  ›  专栏  ›  技术社区  ›  Zach Saucier

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

  •  0
  • Zach Saucier  · 技术社区  · 13 年前

    我有一个代码块,如下所示:

    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行。“doThisFunc”实际上是 getCoin(obj1) 发现从同一部分的第180行开始。我试着用维加的药,但没能起作用

    1 回复  |  直到 11 年前
        1
  •  3
  •   Selvakumar Arumugam    13 年前

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

    doThisFunc.call(this, ".obj2");
    
    推荐文章