jQuery没有';找不到动态添加的DOM对象?
我是jQuery的新手。。。我已经多次使用Javascript,对DOM操作非常熟悉,但对jQuery的API或gears并不熟悉 我通过JSON调用动态添加DOM元素,如下所示:jQuery没有';找不到动态添加的DOM对象?,jquery,json,getjson,Jquery,Json,Getjson,我是jQuery的新手。。。我已经多次使用Javascript,对DOM操作非常熟悉,但对jQuery的API或gears并不熟悉 我通过JSON调用动态添加DOM元素,如下所示: $(document).ready(function() { var url = "jsonMenuItems.js"; $.getJSON(url, null, function(data) { var html = ""; //ale
$(document).ready(function() {
var url = "jsonMenuItems.js";
$.getJSON(url, null, function(data) {
var html = "";
//alert(data.items);
data = data.items;
for (var key in data) {
html += "<td class=\"menuItem\"><span>" + data[key].name + "</span></td>";
};
$("#menuTR").html(html);
});
var lZeroArray = $("#menu td");
lZeroArray.click(function() {
$("#submenu").slideDown("fast");
});
});
$(文档).ready(函数(){
var url=“jsonMenuItems.js”;
$.getJSON(url,null,函数(数据){
var html=“”;
//警报(数据项);
数据=数据项;
对于(数据中的var键){
html+=“”+数据[键]。名称+“”;
};
$(“#menuTR”).html(html);
});
var lZeroArray=$(“#菜单td”);
lZeroArray.单击(函数(){
$(“#子菜单”)。向下滑动(“快速”);
});
});
如果TD项目手动显示在页面上,则单击功能slideDown可以完美工作。。。如果我使用上述代码动态添加TD项,则不会触发单击函数slideDown
jQuery找不到自己添加的项,或者我做错了什么?看看jQuery。这将允许您将事件绑定到动态添加的项
$("#menu td").live("click", function(){
$("#submenu").slideDown("fast");
});
看看jQuery。这将允许您将事件绑定到动态添加的项
$("#menu td").live("click", function(){
$("#submenu").slideDown("fast");
});
看起来您将单击事件添加到了错误的元素中。您正在将动态添加的TDs添加到id=“menuTR”的元素中,但在id=“menu”的后代TD元素上设置单击事件
要进行测试,请尝试将$(“menu td”)更改为$(“menuTR td”),反之亦然。或者,您可以尝试使用$(“td.menuItem”)选择元素,这将选择具有menuItem类的所有td元素。看起来您将单击事件添加到了错误的元素中。您正在将动态添加的TDs添加到id=“menuTR”的元素中,但在id=“menu”的后代TD元素上设置单击事件
要进行测试,请尝试将$(“menu td”)更改为$(“menuTR td”),反之亦然。或者,您可以尝试使用$(“td.menuItem”)选择元素,这将选择具有menuItem类的所有td元素。问题是:您的事件处理程序绑定到
$(“#menu td”)
,但在完成此操作时,菜单中没有td
s
使用live()
或者,在较旧的jquery版本中使用的解决方案是:
var url = "jsonMenuItems.js";
$.getJSON(url, null, function(data) {
var html = "";
//alert(data.items);
data = data.items;
for (var key in data) {
html += "<td class=\"menuItem\"><span>" + data[key].name + "</span></td>";
};
$("#menuTR").html(html);
$("#menu td").click(function() {
$("#submenu").slideDown("fast");
});
});
var lZeroArray = $("#menu td");
lZeroArray.click(function() {
$("#submenu").slideDown("fast");
});
var url=“jsonMenuItems.js”;
$.getJSON(url,null,函数(数据){
var html=“”;
//警报(数据项);
数据=数据项;
for(var输入数据){
html+=“”+数据[键]。名称+“”;
};
$(“#menuTR”).html(html);
$(“#菜单td”)。单击(函数(){
$(“#子菜单”)。向下滑动(“快速”);
});
});
var lZeroArray=$(“#菜单td”);
lZeroArray.单击(函数(){
$(“#子菜单”)。向下滑动(“快速”);
});
问题是:您的事件处理程序被绑定到$(“#menu td”)
,但在完成此操作时,菜单中没有td
使用live()
或者,在较旧的jquery版本中使用的解决方案是:
var url = "jsonMenuItems.js";
$.getJSON(url, null, function(data) {
var html = "";
//alert(data.items);
data = data.items;
for (var key in data) {
html += "<td class=\"menuItem\"><span>" + data[key].name + "</span></td>";
};
$("#menuTR").html(html);
$("#menu td").click(function() {
$("#submenu").slideDown("fast");
});
});
var lZeroArray = $("#menu td");
lZeroArray.click(function() {
$("#submenu").slideDown("fast");
});
var url=“jsonMenuItems.js”;
$.getJSON(url,null,函数(数据){
var html=“”;
//警报(数据项);
数据=数据项;
for(var输入数据){
html+=“”+数据[键]。名称+“”;
};
$(“#menuTR”).html(html);
$(“#菜单td”)。单击(函数(){
$(“#子菜单”)。向下滑动(“快速”);
});
});
var lZeroArray=$(“#菜单td”);
lZeroArray.单击(函数(){
$(“#子菜单”)。向下滑动(“快速”);
});
这是因为在创建它们之后,您必须对它们重新应用单击功能:
$.getJSON(url, null, function(data) {
var html = "";
//alert(data.items);
data = data.items;
for (var key in data) {
html += "<td class=\"menuItem\"><span>" + data[key].name + "</span></td>";
};
$("#menuTR").html(html);
$("#menu td").click(function() {
$("#submenu").slideDown("fast");
});
});
$.getJSON(url、null、函数(数据){
var html=“”;
//警报(数据项);
数据=数据项;
对于(数据中的var键){
html+=“”+数据[键]。名称+“”;
};
$(“#menuTR”).html(html);
$(“#菜单td”)。单击(函数(){
$(“#子菜单”)。向下滑动(“快速”);
});
});
这是因为在创建它们之后,您必须对它们重新应用单击功能:
$.getJSON(url, null, function(data) {
var html = "";
//alert(data.items);
data = data.items;
for (var key in data) {
html += "<td class=\"menuItem\"><span>" + data[key].name + "</span></td>";
};
$("#menuTR").html(html);
$("#menu td").click(function() {
$("#submenu").slideDown("fast");
});
});
$.getJSON(url、null、函数(数据){
var html=“”;
//警报(数据项);
数据=数据项;
对于(数据中的var键){
html+=“”+数据[键]。名称+“”;
};
$(“#menuTR”).html(html);
$(“#菜单td”)。单击(函数(){
$(“#子菜单”)。向下滑动(“快速”);
});
});
-1不,webwires声明选择器工作正常——单击功能slideDown工作正常。啊,但是当他测试单击功能时,他手动将TDs放在页面上,这样他就不会更改现有的封闭元素(大概id为“menu”)。我推翻了我的投票。他使用了#menuTR append(),但是事件处理程序绑定到了#menu td.-1不,webwires已经声明选择器工作正常——单击函数slideDown工作得很好。啊,但是当他测试单击函数时,他手动将TDs放在页面上,这样他就不会更改现有的封闭元素(id为“menu”)我推翻了我的投票。他使用了#menuTR append(),但随后事件处理程序绑定到#menu td.+1 live(),在1.3版之后可用。或者有一个插件,如果使用1.2像我一样。非常感谢你。。。这起作用了。还有另一个实时答案,但您的答案日期是最早的,因此您可以获得答案支票。+1 live()在1.3版之后提供。或者有一个插件,如果使用1.2像我一样。非常感谢你。。。这起作用了。有另一个现场答案,但你的答案是日期第一,所以你得到了答案。Grrr…'一个新的答案出现了(和你的答案一样)'Grrr…'一个新的答案出现了(和你的答案一样)