Форматирование с перекрытием
У меня есть функция 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"
что, очевидно, неправильно.
Кроме того, если один из этих селекторов соответствует нескольким элементам, ваш код не будет работать должным образом.