Position.inbox

Agregar a favoritos

0 Comentarios

Posteado hace 795 días en:

En prototype tenemos la función Position.within para saber si un punto esta dentro de un elemento, pero no tenemos ninguna función que detecte si una caja esta tocando a otra. En drag&drop se utiliza la primera para saber si el elemento esta situado dentro del contenedor, para ello le pasamos el ID y las coordenadas del ratón.
Con esta función puedes saber si ambos elementos están tocando. Solo tienes que pasar las ID’s que quieres comprobar.

Ejemplo: Position.inbox('drag','drop');


Position.inbox =  function(drag,drop) {
    var box = [drag,drop].map(function(e) {
        if(typeof e == 'array') return e;
        e = $(e);
        var pos = this.cumulativeOffset(e);
        return [pos[ 0],pos[ 1],e.offsetWidth,e.offsetHeight];
    }.bind(this));
    var p = [0,1].map(function(i){
        if(box[ 0][ i]<=box[ 1][ i]) return (box[ 0][ i] + box[ 0][ i+2]) - box[ 1][ i];
        return (box[ 1][ i] + box[ 1][ i+2]) - box[ 0][ i];
    });
    return (p[ 0] > 0 && p[ 1] >0) ? true : false;
}

Un ejemplo en donde podría valer es en Assets, selected