jQuery Come faccio ad avere il div in questo codice?
-
21-08-2019 - |
Domanda
Come faccio ad avere il div dall'interno di questo (l'ultima) voce di elenco?
Attualmente ho questo, che è semplicemente brutto ... qualche suggerimento su un selettore / soluzione più pulita?
var div = ul.append("<li><div></div></li>").contents("li:last-child")[0].children[0];
Grazie!
Soluzione
utilizzando una matrice di indice restituisce solo l'oggetto HTMLElement e così rimuove un sacco di funzionalità utili di jQuery, quindi fate attenzione con quello. Tenderei ad avvicinarsi in questo modo:
var div = $("<div/>").appendTo($("<li/>").appendTo(ul));
Da più interno al più esterno, questo crea un elemento della lista, lo aggiunge alla vostra lista, crea un div, lo aggiunge al nuovo elemento della lista, e restituisce il div, ancora avvolto in jQuery bontà. Se si desidera, è possibile aggiungere un indice di array per ottenere solo il HTMLElement:
var div = $("<div/>").appendTo($("<li/>").appendTo(ul))[0];
Altri suggerimenti
Si potrebbe andare circa la aggiunta di un po 'diverso troppo:
var div = $('<div/>');
// do whatever you need to do with the div
$('<li/>').appendTo(ul).append(div);
Ti piace questa?
var div = ul.append("<li><div></div></li>").contents("li:last-child > div")[0];
Che dire di questo:
ul.append("<li><div></div></li>").contents("li:last-child > div").get(0);
Questa, penso:
var div = ul.append('<li><div></div></li>').find("li:last div");
Che ne dite di questo:
var div = $('<li><div/></li>').appendTo(ul).find('div');
solo per completezza:
var div = $('<div></div>').appendTo($("<li></li>").appendTo(ul));
var div = ul.append("<li><div></div></li>").find('div').get(0);
Credo che sia quello che stai cercando.
La mia soluzione è:
var div = ul.append("<li><div></div></li>").find("div:last");