Я бы положил это в DOM первым. Я не уверен, почему мой первый пример не удался. Это действительно странно.
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
Помещение e (возвращаемые элементы) дает jQuery context , в котором можно применить селектор CSS. Это удерживает его от применения идентификатора к другим элементам дерева DOM.
Проблема в том, что вы не используете UL. Если вы поместите голый li в дерево DOM, у вас будут проблемы. Я думал, что это может справиться / обойти это, но это не может.
Возможно, вы не помещаете голые LI в ваше дерево DOM для вашей "реальной" реализации, но UL необходимы для того, чтобы это работало. Вздох.
Пример:
http://jsbin.com/iceqo
Кстати, вас также может заинтересовать микротемблирование .