2

Ich möchte die Drag-Eigenschaft einer <div> entfernen, wenn ich es auf einen Container fallen lassen. Aber ich bekomme einen Fehler "Property 'draggable' of object #<Object> is not a function", für meinen Code unten.jquery ui Fehler für ui.draggable ("zerstören")

$("#fighter1").draggable(); //fighter1 is the id of draggable object 
$("#fighter2").draggable(); 
$("#fighter3").draggable(); 
$("#fighter4").draggable(); 
$("#fighter5").draggable(); 
$("#fighter6").draggable(); 
$("#dest").droppable({  //dest is the id of droppable object 
    drop: function(event, ui) { 
     ui.draggable("destroy"); //I get error here. 
    } 
}); 

Ich benutze die jQuery UI Version 1.8.12

+1

nicht zu Ihrem Problem zu tun haben, aber Sie könnten in Betracht ziehen Verwenden Sie eine Klasse für die Draggables, wenn Sie so viele haben. Beispiel: '$ (" .raggable ") .raggable();' – mekwall

Antwort

0

Meine Vermutung ist, dass 'ui' ist ein einfaches altes Javascript-Objekt und nicht als Objekt jQuery.
Try (revised):
$(ui.draggable).draggable("destroy");

+0

aber wenn ich versuche, die ID des Objekts zu erhalten, gibt es mir null. – northlondoner

+0

Ah, meine jquery-ui ist rostig, es scheint, nach den jquery-ui-Demos: "$ (this) stellt das Dropable dar, auf das das ziehbare Objekt gelegt wird. Ui.draggable stellt das ziehbare Objekt dar." Siehe Revision. –

0

Die Syntax für methods of draggable widget Aufruf ist:

$(".selector").draggable("method"); 

Sie sollten den Methodennamen als string zum draggable() Methode übergeben.

Innerhalb des Drop-Ereignis-Callbacks ist ui.draggable nur eine Referenz auf das jQuery-Objekt, das dem ziehbaren Element entspricht (der $(".selector")-Teil der Syntax).

Sie sollten eigentlich draggable() auf sie aufrufen und den Namen der Methode übergeben:

ui.draggable.draggable("destroy"); 
----^-------  ------^------ 
selector    method name 
     --------^-------- 
    this guy executes the method 
0

Ich löste dieses Problem setTimeout-Funktion:

setTimeout(function(a){a.draggable("destroy");},100,ui.draggable);