Может быть, я не совсем понимаю вашу идею, но я написал некоторый код.
Работает очень просто. Мы связываем два события "click mouseover" на #mypointer, а также на h1 (или любом другом селекторе). Когда событие срабатывает на #mypointer, мы проверяем каждый элемент h1 на соответствие его позиции положению #mypointer и, если совпадает, - запускаем событие для соответствующего элемента.
"use strict";
/*global $*/
function getElementCoordinates(el) {
return {
left: el.offsetLeft,
right: el.offsetLeft + el.offsetWidth,
top: el.offsetTop,
bottom: el.offsetTop + el.offsetHeight
};
}
function checkIntersection($el) {
var pointer = getElementCoordinates($('#mypointer')[0]);
var element = getElementCoordinates($el[0]);
if ((pointer.left >= element.left && pointer.left = element.left && pointer.right = element.bottom && pointer.bottom = element.bottom && pointer.top
<code>
$(function () {
$('#mypointer').live('click mouseover', function (e) {
//here write selectors you want to check for collision
$('h1').each(function () {
if (checkIntersection($(this))) {
$(this).trigger(e.type);
return false;
}
});
});
$('h1').live('click mouseover', function (e) {
$("#output").html(e.type + ' fired on ' + e.target.nodeName);
});
});
</code>
Извините, парсер "съел" функцию checkIntersection, поэтому полный код доступен на http://www.everfall.com/paste/id.php?263utdc1nmqy
WBR,
Roman.