使用jquery获取动态生成的标记的Id的问题

时间:2011-06-11 07:50:31

标签: javascript jquery xml ajax

我有以下函数来显示动态附加项目的标签的click事件的id。但是当执行该函数时我的警报不显示id,它弹出说undefined.please可以任何一个告诉哪里我到底错了。

这是我的功能

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'));

                     });


                 }
         });

    }

这将是我在ajax调用时生成的示例xml代码。

<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 个答案:

答案 0 :(得分:2)

更改此行:

alert($(this).children('td').attr('MenuId'));

到此:

alert($(this).attr('id'));

显示了td的id。如果您打算检查td中的ul - 并注意ul中没有li元素 - 您可以像上面那样使用“children”,但是您需要更正HTML(&lt; ul&gt; &lt; li&gt; ...)并相应地更改子选择器...或者使用find()...取决于您实际上要做的事情。