2012-03-05 8 views
16

Esto está funcionando:Enlazar controlador nativo HTML5 dragstart evento y el acceso dataTransfer usando jQuery

$(".my_dragging_class").each(makeDraggable($(this).get()[0])); 

var makeDraggable = function (el){ 
    el.draggable = 'true'; 
    el.addEventListener('dragstart', function(e){ 
       e.dataTransfer.effectAllowed = 'move'; 
       e.dataTransfer.setData('text/html', 'test'); 
       console.log('dragstart'); 
       }, 
      false); 
} 

Esto no está funcionando: Mensaje de

$(".my_dragging_class").makeDraggable(); 

$.fn.makeDraggable(){ 
    $(this).attr('draggable','true'); 
    $(this).bind('dragstart', function(e){ 
       e.dataTransfer.effectAllowed = 'move'; 
       e.dataTransfer.setData('text/html', 'test'); 
       console.log('dragstart'); 
       }, 
      false); 
} 

error: que reciben un 'e.dataTransfer no está definido' para la línea e.dataTransfer.effectAllowed = 'move';. Mi navegador es FireFox 10.0.2

¿Es posible usar dataTransfer con jQuery de esta manera?

Respuesta

47

Probar:

$.fn.makeDraggable(){ 
    $(this).attr('draggable','true'); 
    $(this).bind('dragstart', function(e){ 
       e.originalEvent.dataTransfer.effectAllowed = 'move'; 
       e.originalEvent.dataTransfer.setData('text/html', 'test'); 
       console.log('dragstart'); 
       }, 
      false); 
} 

El jQuery event object no tiene una propiedad dataTransfer.

+0

¿Cómo es compatible con este método? Todo lo que hizo fue agregar "originalEvent", ¿verdad? Gracias. – tundoopani

+1

@tundoopani [Este compatible] (http://caniuse.com/#search=drag%20and%20drop) – robertc

+0

Soy muy nuevo en jQuery, pero cuando agrega el falso al final de la función de vinculación me impide arrastrando Eliminar el falso y todo funciona como se espera. –

6

El jQuery event object no tiene dataTransfer propiedad ... cierto, pero se puede intentar:

jQuery.event.props.push('dataTransfer'); 

KR, zara

+0

¿Qué es exactamente? Una explicación haría que esta respuesta sea más útil. – fuxia

+1

toscho -> Por: http://api.jquery.com/category/events/event-object/ - Ciertos eventos pueden tener propiedades específicas para ellos. Se puede acceder a ellos como propiedades del objeto event.originalEvent. Para que las propiedades especiales estén disponibles en todos los objetos de evento, se pueden agregar a la matriz jQuery.event.props. Esto no se recomienda, ya que agrega sobrecarga a cada evento entregado por jQuery. – Joe

Cuestiones relacionadas