Проблема с извлечением идентификатора динамически сгенерированного тега с помощью jquery

#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 () … зависит от того, что вы на самом деле пытаетесь сделать.