2011-05-01 9 views
12

Estoy tratando de escribir un arrastre & seleccionar la funcionalidad usando HTML & JavaScript. Con eso quiero decir que habrá un conjunto de objetos con posiciones absolutas arbitrarias. Quiero poder arrastrar el cursor sobre el área donde están distribuidos. Piense en ello como una estrategia de estrategia en tiempo real (selección de unidades) o, alternativamente, en cualquier editor de gráficos vectoriales (selección de objetos para moverlos y editarlos).JavaScript Arrastrar y seleccionar la funcionalidad hecha a la derecha

Antes que nada, estoy al tanto de las cosas que aparecen en las primeras páginas de Google & SO. Por lo tanto, de ninguna manera estoy pidiendo googlear esas cosas para mí y publicar aquí algunos enlaces aleatorios.

La mayoría de las soluciones que pude encontrar son de alguna manera defectuosas. El principal problema es la supresión de la selección de texto real, lo que parece un poco contrario a la naturaleza misma de un navegador web. Algunos de los fragmentos de código causan la selección de centelleo que me parece muy molesto. Algunos no se comportan bien en todos los principales navegadores.

Estoy pidiendo recomendaciones de código/bibliotecas que realmente usó, o que vio con éxito utilizado.

Lo segundo es que me gustaría entender realmente las partes internas de JavaScript detrás de la supresión de la selección. ¿Cómo debería hacerse en teoría? ¿Hay alguna forma no hackish de lograr eso?

Lo más cerca que yo era capaz de encontrar es la siguiente: http://view.jquery.com/tags/ui/1.5b2/demos/ui.selectable.html

Sin embargo, parece estar estrechamente acoplado con jQuery UI, que a su vez requiere jQuery 1.3.x mientras que yo estaba deseando a 1,5 usando jQuery

Respuesta

20

Disculpa mi inglés. Estoy usando esta biblioteca para arrastrar/soltar y es genial. No estoy seguro si es lo que necesita, pero podría ayudar a:

http://threedubmedia.com/code/event/drop/demo/selection

http://threedubmedia.com/code/event/drag

http://threedubmedia.com/code/event/drop

+0

Eso se ve muy bien. ¿Qué navegadores web has probado? TAMBIÉN: ¿Utiliza HTML5 o funcionará con HTML4 también? – julkiewicz

+0

Bueno, encontré esta biblioteca cuando comencé un proyecto para un sitio de ajedrez interactivo, en el que todavía estoy trabajando. Por lo tanto, es la primera vez que lo uso y todavía no está en un sitio de producción, pero en meses nunca encuentro errores o mal funcionamiento. Estoy utilizando FF3.6 como el principal navegador de desarrollo, con frecuencia pruebo IE y esporádicamente en Chrome. Estoy usando HTML5 pero estoy seguro de que debe funcionar en 4. – morgar

+0

Ok, gracias, se ve muy bien. También los documentos son decentes. Definitivamente echaré un vistazo. – julkiewicz

0

A pesar de que el deseo de usar jQuery 1.5, todavía recomendará la salida a la jquery- ui Opción arrastrable (por la forma en que estoy interpretando su deseo, esto parece ser lo que está intentando lograr).

http://jqueryui.com/demos/draggable/

jquery-ui es siempre muy rápido para ponerse al día con la última versión de jQuery, y en muchos casos no tendrán ningún problema. He descubierto que jquery-ui tiende a mantenerse actualizado con jquery mejor que cualquiera de los otros complementos que he encontrado.

Con respecto a querer saber cómo se debe hacer esto, puede explorar el núcleo sin comprimir de jquery con bastante facilidad. Está bastante bien documentado y es bastante sencillo de leer.

+0

En cuanto a jquery-ui estar al día con el núcleo, tengo algunas preocupaciones. Está rezagado por dos lanzamientos principales (1.4 y 1.5) y ha estado rezagado por al menos un año por lo que recuerdo. Parece que 1.4 introdujo tantos cambios que realmente no hay nadie dispuesto a actualizar todo ese código. – julkiewicz

1

El principal problema es la supresión de la selección de texto real, lo que parece un poco contrario a la naturaleza de un navegador web.

La función que está buscando es e.preventDefault();

$("#inputform").mousedown(function(e){ 
    e.preventDefault(); 
    //console.log('mousedown'); 
}).mouseup(function(e){ 
    e.preventDefault(); 
    //console.log('mouseup'); 
}); 

Esto simplemente resuelve el problema de la selección de texto. Puedo ver varias escrituras de selección de arrastre en la web, pero de alguna manera no puedo hacer que funcionen.

1

No estoy 100% seguro si recibí su pregunta correctamente. Pero hice dos plugins que manejan los casos que describes, creo. No necesitan ninguna dependencia, por lo que no es necesario jQuery o cualquier otra cosa. Incluso si no los usa, el código está bien documentado y debería ayudarlo escribiendo el suyo.

Para el arrastrar y soltar, no es dragNdrop
para el mecánico de la selección, hay DragSelect

de qué. ¡Espero que ayude!

Cuestiones relacionadas