Javascript 无法使用jQuery选择div(动态生成)
我有一个弹出框,通过AJAX检索内容数据并显示此内容。这由异步函数Javascript 无法使用jQuery选择div(动态生成),javascript,jquery,ajax,asynchronous,Javascript,Jquery,Ajax,Asynchronous,我有一个弹出框,通过AJAX检索内容数据并显示此内容。这由异步函数generateInfoboxContent()处理,检索到的HTML内容是boxText。将显示的内容取决于用户单击的项目infobox[i].setContent和infobox[i].open()是将内容添加到HTML页面的函数 问题:我想在这个动态生成的内容boxText中选择一个divinfobox\u header\u favorite,使用jQuery。单击(),但似乎没有触发单击处理程序!我怎样才能解决他的问题 j
generateInfoboxContent()
处理,检索到的HTML内容是boxText
。将显示的内容取决于用户单击的项目infobox[i].setContent
和infobox[i].open()
是将内容添加到HTML页面的函数
问题:我想在这个动态生成的内容boxText
中选择一个divinfobox\u header\u favorite
,使用jQuery。单击()
,但似乎没有触发单击处理程序!我怎样才能解决他的问题
jQuery代码
(function(i) {
var boxText = generateInfoboxContent(infoboxes[i].listing_id, function(boxText) {
infoboxes[i].setContent(boxText);
infoboxes[i].open(map, markers[i]);
infoboxes[i].show();
infoboxes_open.push(infoboxes[i]);
console.log('Hello');
// Favorite function
$("#infobox_header_favorite").click(function() {
console.log('favorite!');
toggleFavorite(infoboxes[i].listing_id);
});
});
})(i);
$.getJSON(base_url + 'index.php/main/getplaces',
{ data: data },
function(json){
for( i = 0; i < json.length; i++) {
(function(i) {
var boxText = generateInfoboxContent(infoboxes[i].listing_id, function(boxText) {
infoboxes[i].setContent(boxText);
infoboxes[i].open(map, markers[i]);
infoboxes[i].show();
infoboxes_open.push(infoboxes[i]);
console.log('Hello');
// Favorite function
$("#infobox_header_favorite").click(function() {
console.log('favorite!');
toggleFavorite(infoboxes[i].listing_id);
});
});
})(i);
}
});
结果
Hello
被写入控制台,但是favorite单击divinfobox\u header\u favorite
时,不会将code>写入控制台日志
更新
jQuery代码
(function(i) {
var boxText = generateInfoboxContent(infoboxes[i].listing_id, function(boxText) {
infoboxes[i].setContent(boxText);
infoboxes[i].open(map, markers[i]);
infoboxes[i].show();
infoboxes_open.push(infoboxes[i]);
console.log('Hello');
// Favorite function
$("#infobox_header_favorite").click(function() {
console.log('favorite!');
toggleFavorite(infoboxes[i].listing_id);
});
});
})(i);
$.getJSON(base_url + 'index.php/main/getplaces',
{ data: data },
function(json){
for( i = 0; i < json.length; i++) {
(function(i) {
var boxText = generateInfoboxContent(infoboxes[i].listing_id, function(boxText) {
infoboxes[i].setContent(boxText);
infoboxes[i].open(map, markers[i]);
infoboxes[i].show();
infoboxes_open.push(infoboxes[i]);
console.log('Hello');
// Favorite function
$("#infobox_header_favorite").click(function() {
console.log('favorite!');
toggleFavorite(infoboxes[i].listing_id);
});
});
})(i);
}
});
$.getJSON(基本url+'index.php/main/getplaces',
{data:data},
函数(json){
for(i=0;i
更新2
for( i = 0; i < json.length; i++) {
(function(i) {
var boxText = generateInfoboxContent(infoboxes[i].listing_id, function(boxText) {
infoboxes[i].setContent(boxText);
infoboxes[i].open(map, markers[i]);
infoboxes[i].show();
infoboxes_open.push(infoboxes[i]);
console.log('Hello');
// Favorite function
$("#infobox_header_favorite").on("click", function() {
console.log('asd');
toggleFavorite(infoboxes[i].listing_id);
});
});
})(i);
}
for(i=0;i
收到错误未捕获类型错误:对象[Object Object]没有方法“on”
使用.live()
或.on()
将事件绑定到动态添加的元素
.live()
在jQuery 1.7中不推荐使用页面中是否有id为“#infobox_header_favorite”的实际元素?我们需要更多信息。
是boxText
的一部分。直到执行了infobox[i].open()
之后,它才存在。如果不使用infobox\u header\u favorite id创建多个绑定,该怎么办?或者您正在创建多个具有相同id的元素…刚刚更新了代码以显示从0到json.length的循环,并且在每个循环中我将添加$(“#infobox_header_favorite”)。单击(function())
,因为我需要传递一个唯一的整数infobox[I]。在toggleFavorite()中列出
单击处理程序中的函数。是否可以使用.on()
完成此操作?由于将有许多.on()
处理程序,并且每个处理程序都将被传递一个不同的整数,因此会出现混淆吗?尝试了$(“#infobox_header_favorite”)。在('click')
上,但得到了一个错误未捕获类型错误:对象[Object Object]没有方法“on”
@Nyxynyx:pls检查.on()语法。您可以参考jrummell提供的链接。