2011-06-11 63 views
1

我有以下函數來顯示標記的click事件的id,這些標記是動態追加的。但是當執行該函數時,我的alert不顯示id,它彈出說undefined.please可以告訴我哪裏出錯了。使用jquery獲取動態生成的標記的ID問題

這是我的功能

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> 

回答

2

改變這一行:

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

這樣:

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

,顯示TD的ID。如果您打算在td中檢查ul並注意您在ul中沒有li元素 - 您可以像上面那樣使用「children」,但是您需要更正您的HTML(< ul> < li> ...)並相應地更改子選擇器...或使用find()...取決於您實際嘗試執行的操作。

+0

非常感謝,它的工作正常。 – mahesh 2011-06-11 08:22:47