Jquery 选择动态添加的元素

Jquery 选择动态添加的元素,jquery,Jquery,我正在尝试从mysql异步加载数据。首先,在页面加载时,我向页面添加多个div: $(document).ready(function(){ // Layout var main = $("#main-div"); for(var i = 0; i < array.length; ++i) { main.append("<div class='container'><a href=\"blah\"&g

我正在尝试从mysql异步加载数据。首先,在页面加载时,我向页面添加多个div:

$(document).ready(function(){
        // Layout
        var main = $("#main-div");
        for(var i = 0; i < array.length; ++i) {
            main.append("<div class='container'><a href=\"blah\">"+array[i]+"</a><div class='button-container'><span id='playcount_"+array[i]+"' class='playcount' style='margin-right:5%'>nope</span></div></div>");
        }
        // Get info for each sound in array
        for(var i = 0; i < array.length; ++i) {
            $.post("script/php_getinfo.php", { "file": array[i] }, updatePlaycount, "json");
        }
});

该函数正确获取
数据.name
数据.playcount
字段(例如
A
1
),但由于某些原因,jQuery无法找到
#playcount\u A
!当然,它们已经被添加了,因为添加div不需要加载…

这对我很有效。似乎没有那么多代码需要演示。顺便提一下,fiddles可以使用ajax,所以如果你有一个(大的)库,你也可以这样做

$(document).ready(function () {
    // Layout
    var main = $("#main-div"),
        array = ["A", "B", "C"],
        updatePlaycount =  function (data) {
                console.log(data);
                var $playct = $('#playcount_' + data.name);
                console.log($playct);
                $playct.text(data.playcount);
            }

    function ajaxI(i,arr){
      var J=  JSON.stringify({
                    "name": arr[i],
                        "playcount": (i+1)+''
                });
        console.log(J)
    $.ajax({
            type : "POST",
            dataType: "json",
            url: "/echo/json/",
            data: {
                json: J,
                delay: 3
                },
            success:  updatePlaycount
        });
    }

    for (var i = 0; i < array.length; ++i) {
        main.append("<div class='container'><a href=\"blah\">" + array[i] + "</a><div class='button-container'><span id='playcount_" + array[i] + "' class='playcount' style='margin-right:5%'>nope</span></div></div>");
    } // end for

    // Get info for each sound in array
    for (var j = 0; j < array.length; ++j) {
       ajaxI(j,array);
    } // end for
}); // end ready
$(文档).ready(函数(){
//布局
var main=$(“#main div”),
数组=[“A”、“B”、“C”],
updatePlaycount=函数(数据){
控制台日志(数据);
var$playct=$('#playcount'+data.name);
console.log($playct);
$playct.text(data.playcount);
}
函数ajaxI(i,arr){
var J=JSON.stringify({
“名称”:arr[i],
“播放次数”:(i+1)+”
});
控制台日志(J)
$.ajax({
类型:“POST”,
数据类型:“json”,
url:“/echo/json/”,
数据:{
json:J,
延误:3
},
成功:updatePlaycount
});
}
对于(变量i=0;i

请将支票寄至。。。j/k

您正在调用
array.length
但代码中没有声明它?抱歉,这里的代码太多了。但就像我说的,潜水舱布置得很好。数组只是像
A,B,C这样的字符串
我会尽快检查出来!“delay”参数似乎没有任何作用。我看到它在你的小提琴中工作得很好,但当我在我的网站上运行它时,我立即从
updatePlaycount
收到控制台垃圾邮件。我需要向我的PHP文件中添加一些东西吗?这就是使用jQuery在JSFIDLE中构造ajax请求的方法。延迟参数有助于模拟请求/响应延迟。您将有类似于
data:{yourdata}
的内容,
delay
将是不相关的。既然您说“函数正确地获取了data.name和data.playcount字段”,并且您没有为ajax请求提供代码,那么您可以保留ajax请求,不管您有什么请求。结果发现还有其他潜在问题,但您的代码仍然帮了大忙。。而且比我的更有条理:P谢谢!
$(document).ready(function () {
    // Layout
    var main = $("#main-div"),
        array = ["A", "B", "C"],
        updatePlaycount =  function (data) {
                console.log(data);
                var $playct = $('#playcount_' + data.name);
                console.log($playct);
                $playct.text(data.playcount);
            }

    function ajaxI(i,arr){
      var J=  JSON.stringify({
                    "name": arr[i],
                        "playcount": (i+1)+''
                });
        console.log(J)
    $.ajax({
            type : "POST",
            dataType: "json",
            url: "/echo/json/",
            data: {
                json: J,
                delay: 3
                },
            success:  updatePlaycount
        });
    }

    for (var i = 0; i < array.length; ++i) {
        main.append("<div class='container'><a href=\"blah\">" + array[i] + "</a><div class='button-container'><span id='playcount_" + array[i] + "' class='playcount' style='margin-right:5%'>nope</span></div></div>");
    } // end for

    // Get info for each sound in array
    for (var j = 0; j < array.length; ++j) {
       ajaxI(j,array);
    } // end for
}); // end ready