Javascript/jquery, введите все divs в (x, y). Пересылка касаний?

Возможный дубликат:
Как получить список всех элементов, находящихся в точке клика?

Я знаю, что могу получить элемент с самым высоким z-индексом, используя document.elementFromPoint(x,y).

Проблема в том, что мне нужно получить каждый div, содержащий местоположение события касания.

Как я могу распространять касания к элементам внизу?

Я видел некоторые хакерские решения, которые отображают/скрывают элементы при повторной генерации события или стиль указателя-событий с помощью css, однако я не могу использовать их, и они могут вызвать мерцание...

Следующая диаграмма иллюстрирует, что мне нужно сделать:

Если фиолетовые, зеленые и синие поля представляют элементы div, а красная точка - это местоположение касания, мне нужна функция, которая вернет "div3, div2, div1".

8
11 окт. '12 в 23:16
источник поделиться
2 ответов

Не мерцает этот код:

$("body").click(function(e){
    var x = e.pageX, y = e.pageY;
    var res = [];

    var ele = document.elementFromPoint(x,y);
    while(ele && ele.tagName != "BODY" && ele.tagName != "HTML"){
        res.push(ele);
        ele.style.display = "none";
        ele = document.elementFromPoint(x,y);
    }

    for(var i = 0; i < res.length; i++){
        res[i].style.display = "";
    }
    console.log(res);
});​
19
11 окт. '12 в 23:32
источник

Что делать:

 $(document).click(function(e) { 
    var pageX = e.pageX;
    var pageY = e.pageY;
    $('*').each(function(index) {
        var offset = $(this).offset();
        var left = offset.left;
        var right = offset.right;
        var width = $(this).width();
        var height = $(this).height();
        if(pageX > left && pageX < left + width) {
             if(pageY > top && pageY < top + height) {
                  //Handle the div
             }
        }
    });
});
2
11 окт. '12 в 23:23
источник

Посмотрите другие вопросы по меткам или Задайте вопрос