2015-08-23 19 views
6

Sto seguendo attraverso jquery ui docs per rendere i div trascinabili e ordinabili. E funziona per il trascinamento e l'ordinamento. Ma quando estraggo un div da trascinabile a ordinabile, la larghezza delle modifiche trascinabili e non mantiene la larghezza che dovrebbe essere.jquery ui draggable cambia automaticamente la larghezza

Ecco l'demo

JS:

$(function() { 
    $('#grid-main_content').sortable({ 
     revert:true 
    }); 

    $('#block-list .block').draggable({ 
     connectToSortable: '#grid-main_content', 
     helper: 'clone', 
     revert:'invalid' 
    }); 
}) 

E se io ispezionare l'elemento che ho trascinato al ordinabili, posso vedere che uno stile in linea è dato al blocco trascinabile con una larghezza (di jquery).

Come posso mantenere lo stile di cui è già dotato il blocco? Grazie.

+0

Così che cosa avete bisogno, mantenere la larghezza uguale sia per – Vijay

+0

@Vijay ho bisogno del blocco che ho trascinato su ordinabile per avere la larghezza della stessa dimensione degli altri blocchi in '# grid-main_container'. – Kakar

+0

Hai un altro file css. – Vijay

risposta

6

È possibile utilizzare draggables' start event, per mantenere lo stile specifico del aiutante

$('#block-list .block').draggable({ 
    connectToSortable: '#grid-main_content', 
    helper : 'clone', 
    revert : 'invalid', 
    start : function(event, ui){ 
     $(ui.helper).addClass("ui-helper"); 
    } 
}); 

CSS:

.ui-helper { 
    width: 100% !important; 
} 

Demo

+2

Sì. Sta funzionando. Ma copre solo l'intera larghezza del browser quando lo trascino. Conserva comunque la larghezza all'interno di '# grid-main_container', ma è possibile avere la larghezza del blocco trascinabile da mantenere anche quando viene trascinata? Come quelli con il tuo commento con jquery ui 1.10.4. – Kakar

+0

È possibile utilizzare '.ui-draggable-dragging' nell'ultima interfaccia utente di jQuery, eliminando la necessità di JavaScript personalizzato. – Dunc

0

Ho appena creare un Codepen demo

Qualsiasi modo dare un'occhiata a questo, e copiare i codici se sembra funzionare.

se è necessario la parte inferiore della schiena div alla sua dimensione originale, Per favore cambia

#grid-main_content { 
width:80%;  
+0

Si sta utilizzando lo stesso codice di @Artur – Kakar

+0

Sì, ho anche aggiunto questo codice + la larghezza, ma la larghezza non è chiara nel codice Artur. – Vijay

2

Questo ha funzionato per me. Basta impostare la larghezza dell'elemento trascinabile

$('.selector').draggable({ 
    helper: 'clone', 
    start: function(event, ui){ 
     $(ui.helper).css('width', `${ $(event.target).width() }px`); 
    } 
}) 

in questo modo non è necessario aggiungere il CSS

Problemi correlati