为什么$ .each()的函数没有执行?

时间:2016-12-18 06:04:50

标签: jquery

我的代码是:

$(document).ready(function() {

    var catArr=[];
    $.get("viewData.php?action=getCat", function(json) {
        if(json.catArr.length>0)
            $.each(json.catArr, function() 
            {
                catArr.push(this.category);
            });
    }, 'json');

    $.each(catArr, function(index, el) {
        console.log(el);
        $("#category_selector").append($('<option>', { 
            value: el,
            text : el
        }));
    });

});

我确保使用console.log()填充数组catArr []。这是截图:

contents of catArr

但由于console.log(el);,我没有得到任何输出。这是不是意味着$ .each()没有执行?为什么会这样,我该如何解决?

2 个答案:

答案 0 :(得分:2)

我认为你应该在$ .get ...

中加入$ .each
$(document).ready(function() {

    var catArr=[];
    $.get("viewData.php?action=getCat", function(json) {
        if(json.catArr.length>0)
            $.each(json.catArr, function() 
            {
                catArr.push(this.category);
            });

        $.each(catArr, function(index, el) {
            console.log(el);
            $("#category_selector").append($('<option>', { 
                value: el,
                text : el
            }));
        });
    }, 'json'); 
});

答案 1 :(得分:1)

您似乎正在从服务器获取数据,但是您的javascript在运行代码后立即运行,这意味着您的/* When the input is not focused */ md-input-container label { color: red; } /* When the input is focused */ md-input-container.md-input-focused label { color: blue; } 在数据来自服务器之前运行,您应该这样做像这样:

$.each()
  

您应该在从服务器

收到数据时对其进行操作

希望这有帮助!