Форматирование с перекрытием

У меня есть функция 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);
   });

Вы можете найти программу, которую я пытаюсь сделать здесь

2 ответа

Решение

Я обнаружил, что проблема была в том, что у меня просто был ненужный ) когда я пытался изменить .click линия к .isOverlap

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

Строки, которые вы передаете этой функции, являются полными селекторами jQuery.

Следовательно, "#"+idOne внутри функция превращается в "##mario"что, очевидно, неправильно.

Кроме того, если один из этих селекторов соответствует нескольким элементам, ваш код не будет работать должным образом.

Другие вопросы по тегам