使用jquery获取动态生成的标记的ID问题
问题描述:
我有以下函数来显示标记的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>
答
改变这一行:
alert($(this).children('td').attr('MenuId'));
这样:
alert($(this).attr('id'));
,显示TD的ID。如果您打算在td中检查ul并注意您在ul中没有li元素 - 您可以像上面那样使用“children”,但是您需要更正您的HTML(< ul> < li> ...)并相应地更改子选择器...或使用find()...取决于您实际尝试执行的操作。
非常感谢,它的工作正常。 – mahesh 2011-06-11 08:22:47