#javascript #jquery #xml #ajax
#javascript #jquery #xml #ajax
Вопрос:
У меня есть следующая функция для отображения идентификатора для события щелчка тега, для которого элементы добавляются динамически. но при выполнении функции в моем оповещении не отображается идентификатор, появляется сообщение undefined.пожалуйста, кто-нибудь может сказать, где именно я ошибаюсь.
Это моя функция
function getmenu()
{
$.ajax({
type: "POST",
url: "JsonWebService.asmx/GetMenus",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "xml",
success:
function (results) {
$(results).find("Menu").each(function () {
var Text = $(this).find("Text").text();
var MenuId = $(this).find("MenuId").text();
var dmenu = $("#Menudiv");
dmenu.append("<td id='" MenuId "'><ul>" Text "</ul></td>");
});
$("#Menudiv").children('td').click(function () {
alert($(this).children('td').attr('MenuId'));
});
}
});
}
Это будет мой пример XML-кода, сгенерированного при вызове ajax.
<ArrayOfMenu><Menu><MenuId>1</MenuId><Text>Books</Text></Menu><Menu><MenuId>2</MenuId><Text>Cd</Text></Menu><Menu><MenuId>3</MenuId><Text>Calendar</Text></Menu></ArrayOfMenu>
Ответ №1:
Измените эту строку:
alert($(this).children('td').attr('MenuId'));
к этому:
alert($(this).attr('id'));
Это показывает идентификатор td. Если вы намерены проверить ul в td — и обратите внимание, что у вас нет элементов li в ul — вы можете использовать «дочерние элементы», как вы делали выше, но вам нужно будет исправить свой HTML (<ul><li> …) и соответствующим образом изменить селектор дочерних элементов … или использовать find () … зависит от того, что вы на самом деле пытаетесь сделать.