Похоже, вы пытаетесь добавить элемент с идентификатором last
, для этого вы должны использовать этот селектор: $('#last')
.
Вы не хотите добавлять элементы <li>
к элементу <div>
, поэтому ваш селектор должен выглядеть так: $('#last').children('ul')
.
Мне нравится повышать производительность, кэшируя строки HTML, а затем добавляя их все сразу, а не совершая множество вызовов функции .append()
:
function initialize() {
jQuery.get("markers.xml", {}, function(data) {
var output = [];
jQuery(data).find("marker").each(function() {
var name = jQuery(this).attr("name");
output.push('<li class="arrow">' + name + '</li>');
});
$('#last').children('ul').append(output.join('')).listview('refresh');
});
}
Обратите внимание на .listview('refresh')
после того, как я добавил новый HTML-код к listview
, это обновит виджет, чтобы правильно стилизовать новые добавленные элементы <li>
.
Источник: http://jquerymobile.com/demos/1.0/docs/lists/docs-lists.html (внизу страницы)
Поскольку я не знаю структуру вашего XML-документа, я не могу быть уверен, что цикл .each()
будет работать так, как вы хотели бы.
Кроме того, поскольку AJAX может извлекать страницы jQuery Mobile, не стоит полагаться на событие onload
для запуска, вместо этого связывайте инициализацию с событием pageinit
для конкретной страницы:
$(document).delegate('.type-home', 'pageinit', function () {
//run code here
});
Источник: http://jquerymobile.com/demos/1.0/docs/api/events.html
UPDATE
function initialize() {
jQuery.get("markers.xml", {}, function(data) {
data = $($.parseXML(data));
var output = [];
data.find('table[name="markers"]').each(function() {
var name = jQuery(this).children('[name="name"]').text();
output.push('<li class="arrow">' + name + '</li>');
});
$('#last').children('ul').append(output.join('')).listview('refresh');
});
}
Вот демоверсия: http://jsfiddle.net/7ZeEG/
Обратите внимание, что вы также можете установить dataType
вашего $.get()
вызова на xml
вместо использования: data = $($.parseXML(data));
(не проверено):
function initialize() {
jQuery.get("markers.xml", {}, function(data) {
var output = [];
data.find('table[name="markers"]').each(function() {
var name = jQuery(this).children('[name="name"]').text();
output.push('<li class="arrow">' + name + '</li>');
});
$('#last').children('ul').append(output.join('')).listview('refresh');
}, 'xml');//see that I declared a XML dataType right here
}