Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

198
Vistas
Arrastrar y soltar de jQuery: ingeniería inversa uiTokenizer de Facebook en 'Artes e intereses'

Estoy aplicando ingeniería inversa al uiTokenizer de Facebook usando $.special.event.drag y $.special.event.drop y jQuery porque jQuery UI ordenable/arrastrable es pesado y lento.

Creo que mi pregunta está relacionada con las matemáticas de tolerancia para decidir cuándo inyectar el elemento de marcador de posición.

He limpiado mucho de este código desde que lo escribí por primera vez, pero la premisa sigue ahí y debería funcionar para esta pregunta.

Aquí está el código y la lógica: http://jsfiddle.net/JoshuaIRL/kf9Qt/ para probar.

El área que necesito que alguien mire sería el área de "tolerancia" de la función $.drop si la encuentra.

 $.drop({ mode:'intersect', tolerance: function( event, proxy, target ){ var testV = event.pageY > ( target.top + target.height / 2 ); $.data(target.elem, "drop+reorder", testV ? "insertAfter" : "insertBefore" ); return this.contains( target, [ event.pageX, event.pageY ] ); } });

Facebook parece hacer una "inserción posterior" cuando el cursor real toca otro elemento.

Estoy pensando que esto podría ser el corazón de esto también:

 if ( drop && $(drop).is('.uiToken') && ( drop != dd.current || method != dd.method ) ){ $( this )[ method ]( drop ); dd.current = drop; dd.method = method; dd.update(); refreshTokens(clickOffset); placeholder.insertAfter($(this)); }

Además, necesito descubrir cómo asegurarme de que no estoy sobrevinculando mis elementos con este estúpido método abierto $.drop() ... :-\

Cualquier ayuda que pueda ofrecer será muy apreciada.

ACTUALIZACIÓN: para responder a sus comentarios... Si va al enlace JSFiddle y arrastra un elemento sobre otro elemento... Debería eliminarlo inmediatamente en todas las direcciones. Para ver una comparación entre la mía y la de Facebook, consulte la de ellos en https://www.facebook.com/ /favorites y luego haga clic en el botón "Editar".

Ya sea que el método de "Tolerancia" sea o no lo que está mal, su lista de intereses es lo que estoy buscando duplicar. Ni siquiera sé si el área de Tolerancia es lo que está mal, quiero lograr lo que están haciendo.

¡Espero que esto ayude!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Parece que solo está determinando si los arrastrables a la derecha se cruzan con los objetivos a la izquierda, y si la parte superior de los arrastrables se cruza con la parte inferior de los objetivos (con cierta tolerancia).

Hay 2 maneras en que haría esto:

  1. Encuentre todos los elementos de intersección y encuentre el área más grande, en este caso, el cuadrado izquierdo de la imagen a continuación.
  2. Si el elemento que se puede arrastrar tiene las mismas dimensiones que el elemento que se puede soltar, la superposición de 1/4 sería suficiente; en este caso, el cuadrado correcto.

ingrese la descripción de la imagen aquí

El segundo es, con mucho, el más fácil de implementar, pero no es tan general como el primero. Entonces, al echar un vistazo rápido a su código, recorrería todos los elementos desplegables "posibles" para determinar el área de superposición y apuntar al más grande.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda