Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

202
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda