Je le mettrais d'abord dans le DOM. Je ne sais pas pourquoi mon premier exemple a échoué. C'est vraiment bizarre.
var e = $("<ul><li><div class='bar'>bla</div></li></ul>");
$('li', e).attr('id','a1234'); // set the attribute
$('body').append(e); // put it into the DOM
Mettre e (les rendements des éléments) donne jQuery context sous lequel appliquer le sélecteur CSS. Cela l'empêche d'appliquer l'ID à d'autres éléments de l'arborescence DOM.
Le problème semble être que vous n'utilisez pas l'UL. Si vous mettez un li nu dans l'arbre DOM, vous allez avoir des problèmes. Je pensais qu'il pourrait gérer/contourner cela, mais il ne peut pas.
Vous ne pouvez pas mettre des LI nus dans votre arborescence DOM pour votre "vraie" implémentation, mais les UL sont nécessaires pour que cela fonctionne. Soupir.
Exemple: http://jsbin.com/iceqo
Par ailleurs, vous pouvez également être intéressé par microtemplating.
cela ne fonctionne pas car vous appliquez find dans l'élément dom que vous avez créé. Dans ce cas, vous essayez de trouver 'li'underneath' li', mais il n'y a qu'un 'div' et un texte' bla'. Essayez quelque chose comme ça pour comprendre ce qui se passe 'var template = $ ("