Maison > Article > interface Web > Comment détecter les collisions entre les éléments jQuery ?
Détection de collision entre les éléments jQuery Div
La détection de collisions entre éléments est une tâche fondamentale dans de nombreuses applications Web. Dans ce cas, l'objectif est de déterminer si deux
Une approche efficace pour résoudre ce problème consiste à tirer parti de la fonction chevauchements fournie ci-dessous :
var overlaps = (function () { function getPositions( elem ) { var pos, width, height; pos = $( elem ).position(); width = $( elem ).width(); height = $( elem ).height(); return [ [ pos.left, pos.left + width ], [ pos.top, pos.top + height ] ]; } function comparePositions( p1, p2 ) { var r1, r2; r1 = p1[0] < p2[0] ? p1 : p2; r2 = p1[0] < p2[0] ? p2 : p1; return r1[1] > r2[0] || r1[0] === r2[0]; } return function ( a, b ) { var pos1 = getPositions( a ), pos2 = getPositions( b ); return comparePositions( pos1[0], pos2[0] ) && comparePositions( pos1[1], pos2[1] ); }; })();
Cette fonction prend deux
Pour démontrer l'utilisation de cette fonction, vous pouvez créer un ensemble de
$(function () { var area = $( '#area' )[0], box = $( '#box0' )[0], html; html = $( area ).children().not( box ).map( function ( i ) { return '<p>Red box + Box ' + ( i + 1 ) + ' = ' + overlaps( box, this ) + '</p>'; }).get().join( '' ); $( 'body' ).append( html ); });
Dans cet exemple, une boîte rouge nommée "Red box" est créée et déplacée à l'aide de la souris. Plusieurs autres cases intitulées « Box 1 » à « Box 4 » sont positionnées à différents endroits dans la division « zone ». Le script jQuery vérifie les collisions entre la "boîte rouge" et chacune des autres cases et affiche les résultats dans une série de
éléments.
En utilisant la fonction chevauchements, vous pouvez implémenter efficacement la détection de collision pour jQuery
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!