2013-02-28 86 views
0

我有一个函数isOverlap,它告诉两个对象重叠,这里是源代码:重叠格式化

function isOverlap(idOne,idTwo){ 
    var objOne=$("#"+idOne), 
     objTwo=$("#"+idTwo), 
     offsetOne = objOne.offset(), 
     offsetTwo = objTwo.offset(), 
     topOne=offsetOne.top, 
     topTwo=offsetTwo.top, 
     leftOne=offsetOne.left, 
     leftTwo=offsetTwo.left, 
     widthOne = objOne.width(), 
     widthTwo = objTwo.width(), 
     heightOne = objOne.height(), 
     heightTwo = objTwo.height(); 
    var leftTop = leftTwo > leftOne && leftTwo < leftOne+widthOne 
      && topTwo > topOne && topTwo < topOne+heightOne, 
     rightTop = leftTwo+widthTwo > leftOne && leftTwo+widthTwo < leftOne+widthOne 
      && topTwo > topOne && topTwo < topOne+heightOne, 
     leftBottom = leftTwo > leftOne && leftTwo < leftOne+widthOne 
      && topTwo+heightTwo > topOne && topTwo+heightTwo < topOne+heightOne, 
     rightBottom = leftTwo+widthTwo > leftOne && leftTwo+widthTwo < leftOne+widthOne 
      && topTwo+heightTwo > topOne && topTwo+heightTwo < topOne+heightOne; 
    return leftTop || rightTop || leftBottom || rightBottom; 
} 

我需要的主要事情是如何格式化调用函数,任何帮助吗?这是我在这样的失败尝试:

if($(document).isOverlap("#mario", ".block")) { 
     $(".block").hide("explode", { pieces: 16 }, 100); 
    }); 

你可以找到我试图让here

回答

0

我发现,问题是,我根本就不需要的)当我试图将.click线改为.isOverlap

2
isOverlap("#mario", ".block") 

你传递给这个函数的字符串是完整的jQuery选择方案。

因此,"#"+idOne里面的函数变成"##mario",这显然是错误的。

此外,如果其中任何一个选择器匹配多个元素,您的代码将无法正常工作。

+0

'isOverlap'是一个正常功能。你可以像调用其他函数一样调用它:'isOverlap(...)'。你需要学习Javascript的基础知识。 – SLaks 2013-03-01 17:37:34