Domanda

Sto cercando di capire perché

$('#title').replaceWith('ha'); 

sarà lavorare fuori

drop: function(event, ui) {}

Area nello script droppable di jQuery, ma non funzionerà all'interno. In particolare, se faccio

$(".droppable").droppable({
drop: function(event, ui) {
    $('#title').replaceWith('ha'); 
     }

ho un Runtime Error (line 1102) data(...).options is null or not an object. Anche se inserisco un $('#title').append('ha'); all'interno della goccia :, funziona. Tuttavia, se ho messo $('#title').replaceWith('ha'); altrove al di fuori

$(".droppable").droppable({ /* */  });

funziona?

È stato utile?

Soluzione

fa l'elemento con id = 'title' anche avere class = 'droppable'

ho potuto vedere se si sta cercando di rimuovere un elemento che avrebbe causato l'evento di rilascio si verifichi non ci può essere altro elemento con cui lavorare e si potrebbe ottenere un 'non un oggetto' errore. Non lo so per certo, senza cercare questo fuori me stesso.

Forse quello che si può fare è segnare l'oggetto con una certa classe fittizio (i dati di jQuery sarebbe più adatto e rispettare la SRP, ma che è fuori della portata di questa risposta), e quindi al di fuori della funzione di goccia del droppable voi può fare la sostituzione

qualcosa di simile ...

$(".droppable").droppable({
    drop: function(event, ui) {
        // mark the element for replacement
        $('#title').addClass('replaceThisElement'); 
    }
});

// outside of the drop function
$('#title .removeThisElement').replaceWith('ha');

Altri suggerimenti

Sto postando questo come una risposta, ma in realtà la sua più di un commento sulla risposta di Jon Erickson (non ho i punti reputazione di commentare ancora). 18 mesi dopo, questo è ancora un bug in IE e volevo solo elaborare il 'come eseguire qualcosa al di fuori della goccia funzione di' parte suggerendo setTimeout ()

sto risolvendo il problema passando una funzione anonima che rimuove l'elemento a setTimeout (). A seconda delle impostazioni di snap o reversione si potrebbe prendere in considerazione anche nascondere il trascinabile.

$(".droppable").droppable({
    drop: function(event, ui) {
        // do something interesting here...

        // now get rid of the draggable
        $(ui.draggable).hide();           
        setTimeout(function(){$(ui.draggable).remove();}, 1);
    }
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top