Existe-t-il une méthode dans jQuery pour sélectionner tous les éléments situés à une position particulière, par exemple, sélectionner l’élément situé à gauche: 100 et haut: 300 et un autre div situé à la même position, sur un clic, je souhaite obtenir les identifiants des deux Div ?
Ce serait bien si je pouvais sélectionner un élément situé dans une plage de positions,
http://jsfiddle.net/simmi_simmi123/YjC6y/1908/
Ce violon mais son identifiant ne montre que le top div.
$(document).ready(function(){ $(document.body).bind('click', function(e){ var elem = document.elementFromPoint(e.pageX, e.pageY); alert('you selected element id: ' + elem.id); }); });
Essayez mon violon http://jsfiddle.net/YjC6y/1911/
Il utilise le code de possible dup comme commenté sur votre message d’origine:
$(document).ready(function(){ $(document.body).bind('click', function(e){ var elems = GetAllElementsAt(e.pageX, e.pageY); elems.each(function() { alert($(this).attr('id')); }); }); }); function GetAllElementsAt(x, y) { var $elements = $("body *").map(function() { var $this = $(this); var offset = $this.offset(); var l = offset.left; var t = offset.top; var h = $this.height(); var w = $this.width(); var maxx = l + w; var maxy = t + h; return (y <= maxy && y >= t) && (x <= maxx && x >= l) ? $this : null; }); return $elements; }
Crédits principaux @hunter pour cet article: recherche des éléments empilés sous (visuellement) un élément dans jquery
Quelque chose comme ça –
$('*').filter(function () { if ($(this).position().left === 100 && $(this).position().top === 300) return true; else return false; }).each(function () { console.log($(this).attr('id')); });
Démo -->
http://jsfiddle.net/YjC6y/1910/