0

2 つのオブジェクトがオーバーラップしているかどうかを示す関数 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);
   });

ここで私が作ろうとしているプログラムを見つけることができます

4

2 に答える 2

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

この関数に渡す文字列は、完全な jQuery セレクターです。

したがって、"#"+idOne関数内は に変わりますが"##mario"、これは明らかに間違っています。

また、これらのセレクターのいずれかが複数の要素に一致する場合、コードは正しく機能しません。

于 2013-03-01T04:16:29.307 に答える
0

問題は).click回線を.isOverlap

于 2013-03-04T17:27:35.367 に答える