Я хочу использовать document.createDocumentFragment()
для создания оптимизированной коллекции элементов HTML, содержащих «.data», исходящие из jQuery (v 1.4.2), но я вид застрял в том, как получить данные на поверхность из элементов HTML.Использование document.createDocumentFragment() дочерних элементов dom, содержащих jQuery.data
Вот мой код:
var genres_html = document.createDocumentFragment();
$(xmlData).find('genres').each(function(i, node) {
var genre = document.createElement('a');
$(genre).addClass('button')
.attr('href', 'javascript:void(0)')
.html($(node).find('genreName:first').text())
.data('genreData', { id: $(node).find('genreID:first').text() });
genres_html.appendChild(genre.cloneNode(true));
});
$('#list').html(genres_html);
// error: $('#list a:first').data('genreData') is null
alert($('#list a:first').data('genreData').id);
Что я здесь делаю неправильно? Я подозреваю, что это, вероятно, что-то с .cloneNode()
не переносит данные, когда элемент добавляется к documentFragment
. Иногда бывает множество строк, поэтому я хочу, чтобы вещи были довольно оптимизированы, по скорости.
Спасибо!
Да, я думаю, что это основная часть, с которой я смущен, я не знаю, хочу ли я начать с объекта jQuery или нет. Я смотрел этот слайд, но это просто JS: http://ejohn.org/apps/workshop/adv-talk/#6 - мне нужно, чтобы в основном преобразовать это в объект jQuery, в котором хранятся данные элемента , – taber
Вы можете использовать собственные функции 'setAttribute' и' innerHTML', но если вам нужно использовать 'data()' jQuery, то, очевидно, вам понадобится объект jQuery. Так что вопрос: * действительно ли вам нужно использовать «данные» *? Возможно, вы могли бы установить настраиваемый атрибут. Я могу обновить свой ответ с возможностью. – user113716
Спасибо, да, проблема в том, что я не могу добавить элемент документа jQuerified (содержащий данные) к моему документу. Да, я хотел бы использовать «данные». :( – taber