Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用jQuery选择div(动态生成)_Javascript_Jquery_Ajax_Asynchronous - Fatal编程技术网

Javascript 无法使用jQuery选择div(动态生成)

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

我有一个弹出框,通过AJAX检索内容数据并显示此内容。这由异步函数
generateInfoboxContent()
处理,检索到的HTML内容是
boxText
。将显示的内容取决于用户单击的项目
infobox[i].setContent
infobox[i].open()
是将内容添加到HTML页面的函数

问题:我想在这个动态生成的内容
boxText
中选择一个div
infobox\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
被写入控制台,但是
favoriteinfobox\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提供的链接。