2012-12-19 5 views
20

chrome throw err: Kann die Methode 'setData' von undefined nicht aufrufen, Ich finde die e ist nicht gleich window.event (es hat nicht property dataTransfer); beide hat sehr große verschiedenejquery html 5 dragstart .on ('dragstart', Funktion (e) {}) e.dataTransfer.setData() funktioniert nicht

Ich finde beide fast gleich im click-Ereignis.

Ich verwendete http://code.jquery.com/jquery-latest.js.

Ich benutze keine Drag-Funktion, ich will nur wissen, warum. es ist ein neues Feature in HTML 5, jquery immer noch dahinter? oder jquery Team will nicht unterstützen ?? oder einen anderen Grund

+0

Können Sie bitte ein Beispiel für den Code angeben, den Sie verwenden? – PhearOfRayne

Antwort

50

In der Callback-Funktion erhalten Sie einen jQuery-Wrapper über ein natives Ereignis. Verwenden Sie die originalEvent Eigenschaft übergebene Argument:

$('...').on('dragstart', function (event) { 
    event.originalEvent.dataTransfer.setData('...', '...'); 
}); 

P. S. Vergessen Sie nicht, das Attribut draggable="true" für das zu ziehende Element festzulegen.

+0

vielen Dank. Warum jQuery nicht nur natives Callback-Ereignis verwendet – zsytssk

+2

@zsytsssk Es wird getan, um Browser berechenbaren Inhalt und Verhalten bereitzustellen. Lesen Sie diese http://api.jquery.com/category/events/event-object/ –

+0

würde 'event.dataTransfer.setData()' funktionieren dann, wenn jQuery nicht auf der Seite – rizwaniqbal

2

jQuery erstellt ein eigenes Ereignisobjekt und hat noch keine dataTransfer-Eigenschaft. Dies fügt dataTransfer dem Ereignisobjekt hinzu.

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