Questa è la mia prima volta che chiedo qualcosa su StackOverflow quindi perdonami se faccio qualcosa di sbagliato. Sono anche nuovo di jQuery ma attraverso la lettura e le esercitazioni sono riuscito a creare un esempio funzionante.È possibile scrivere questo codice jquery più breve? (principiante)
Il codice seguente è ciò che ho creato. Il significato di questo è che ho tre liste con requisiti trascinabili e tre segnaposto in cui i requisiti possono essere eliminati. L'idea è che il segnaposto 1 accetta solo articoli dalla lista 1, segnaposto 2 solo dalla lista 2 e segnaposto 3 dalla lista 3. Quando un requisito viene trascinato, il segnaposto verrà evidenziato in modo che l'utente sappia dove può essere eliminato.
Quindi ora per la domanda: c'è un modo per ritagliare questo codice? Ho la sensazione che questo non sia il modo migliore, è tre volte lo stesso codice con solo due parole che stanno cambiando. Come ho imparato dalle esercitazioni: non scrivere mai le cose due volte.
Un'altra domanda: è possibile quando i requisiti vengono eliminati nei segnaposto per creare una linea tra di essi? Vorrei che l'utente clicchi su un segnaposto e clicchi sull'altro segnaposto per disegnare una connessione. Ho già visto molti esempi con html5 canvas e jsPlumb ma non ho bisogno di tutte quelle funzionalità. Solo una linea tra i segnaposto quando si fa clic.
$(function() {
$("#requirements").accordion();
$("#requirements ul li").draggable({
appendTo: "body",
helper: "clone"
});
$(".row1 .placeholder").droppable({ //makes row1 .placeholder a droppable area
accept: "#requirements .row1 li ",
activeClass: "ui-state-hover",
drop: function(event, ui) {
var $this = $(this);
$("<li></li>").text(ui.draggable.text()).appendTo(this);
$this.droppable('disable').addClass("highlighted");
}
});
$(".row2 .placeholder").droppable({ //makes row2 .placeholder a droppable area
accept: "#requirements .row2 li ",
activeClass: "ui-state-hover",
drop: function(event, ui) {
var $this = $(this);
$this.find(".placeholder").remove();
$("<li></li>").text(ui.draggable.text()).appendTo(this);
$this.droppable('disable').addClass("highlighted");
}
});
$(".row3 .placeholder").droppable({ //makes row3 .placeholder a droppable area
accept: "#requirements .row3 li ",
activeClass: "ui-state-hover",
drop: function(event, ui) {
var $this = $(this);
$this.find(".placeholder").remove();
$("<li></li>").text(ui.draggable.text()).appendTo(this);
$this.droppable('disable').addClass("highlighted");
}
});
Come detto Sono nuovo di jQuery così buone spiegazioni sono i benvenuti. Grazie in anticipo!
Rob
Questo potrebbe essere meglio su Code Review. Detto questo, una delle migliori prime domande scritte che abbia mai visto su SO. –
Non è una risposta alla tua domanda, ma: fai uno sforzo per usare "direttive angular.js", rimuoverà tutto questo codice brutto che usi solo per gestire l'HTML, e potresti scrivere il codice logico aziendale che ti interessa . – YardenST
È bello vedere i primi timer mettere insieme domande ben scritte e mostrare comprensione per le basi di ciò che stanno facendo. –