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!

È stato utile?

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");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top