ich diese jQuery-Erweiterung zu schaffen endete, angepasst von this link und Xufox Kommentar:
(function ($, document, undefined) {
$.fn.extend({
/**
* @param {number} x The x-coordinate of the Point.
* @param {number} y The y-coordinate of the Point.
* @param {Element} until (optional) The element at which traversing should stop. Default is document.body
* @return {jQuery} A set of all elements visible at the given point.
*/
elementsFromPoint: function(x, y, until) {
until = this[0];
var parents = [];
var current;
do {
current = document.elementFromPoint(x, y);
if (current !== until) {
console.log("current",current);
parents.push(current);
current.style.pointerEvents = 'none';
} else {
current = false;
}
} while (current);
parents.forEach(function (parent) {
return parent.style.pointerEvents = 'all';
});
return $(parents);
}
});
})(jQuery, document);
ich benutze es etwa so:
$('.availabilityOverlap').mouseover(function(e){
console.log($('.availabilityOverlap').elementsFromPoint(e.pageX, e.pageY));
});
Es produziert genau die Ausgabe, die ich wollte: ein Array von jQuery-Elementen bis zum angegebenen Container, aber nicht inklusive.
['document.elementsFromPoint'] (https://developer.mozilla.org/en-US/docs/Web/API/Document/elementsFromPoint). – Xufox
Sprechen Sie über divs, die alle Abkömmlinge voneinander sind, oder divs, die nicht im HTML-Code verbunden sind, aber so positioniert wurden, dass sie sich über CSS überlappen? – nnnnnn
@Xufox: nicht in Safari verfügbar :( – T3db0t