8

重複の可能性:
クリックした位置にあるすべての要素のリストを取得する方法は?

を使用して、最高の z-index を持つ要素を取得できることを知っていdocument.elementFromPoint(x,y)ます。

問題は、タッチ イベントの場所を含むすべての div を取得する必要があることです。

下の要素にタッチを伝播するにはどうすればよいですか?

イベントの再生成中に要素を表示/非表示にするハックなソリューションや、css を使用したポインターイベント スタイルを見てきましたが、これらを使用することはできず、ちらつきが発生する可能性があります...

次の図は、私が何をする必要があるかを示しています。

紫、緑、青のボックスが div 要素を表し、赤い点がタッチ位置である場合、「div3、div2、div1」を返す関数が必要です。

4

2 に答える 2

19

このコードではちらつきはありません:

$("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);
});​
于 2012-10-11T20:32:07.917 に答える
2

どうするか:

 $(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
             }
        }
    });
});
于 2012-10-11T20:23:14.077 に答える