在.each之后Jquery未定义

时间:2013-01-03 23:53:32

标签: javascript jquery each .post

我从一个.post之后调用的.each得到了未定义的结果。以下是我的代码。

的Javascript

    var index=0;
    $("td.load_ads").each(function(){
        var loading=$(this);
        $.post('/self_coded_helpers/jpost_get_ads.php',{index:index,type:'fetch_id'},function(data){
            if($("input.exist").length > 0){
                $("input.exist").each(function(){
                    if($(this).val()==data){
                        var load='0';
                    }else{
                        var load='1';
                    }
                });
            }else{
                var load='1';
            }
            alert(load);
            if(load == 1){
                $.post('/self_coded_helpers/jpost_get_ads.php',{index:index,type:'fetch_details',id:data},function(data2){
                    $("body").append('<input type="hidden" class="exist" name="exist" value="'+data+'">');
                    if(data2!=0){
                        loading.html(load+'--'+data2);
                    }else{
                        loading.html("Place a Free Ad Now!");
                    }
                });
            }else{
                loading.html(load+"--"+data+"Place a Free Ad Now!");
            }
        });
        index=index+1;
    });

我在这里尝试做的是在每个td.load_ads上启动一个.post,之后用每个现有的input.val检查数据。如果每个现有输入的输入值与收集的数据相同,那么我将不会回显第二个.post结果。

但是,整个操作似乎没有正确显示。我意识到我的问题是在.post之后的.each。当我做我的警报(加载)。返回的结果未定义。我错过了什么或者我的编码在逻辑上是不正确的吗?任何帮助将不胜感激。

/ * 已添加问题 / *

所以现在,我还有另一个问题,所以我想也可以在这里添加它。

我尝试附加输入

($(“body”)。append('');)

在剧本的第二部分。

因此,当循环重复时,它将能够读取输入并接收新添加的输入值。但是我的加载总是返回1,因为我的$(“input.exist”)。length总是返回false。

或者这对jquery不可能吗?

/ * 已添加问题的结尾 / *

1 个答案:

答案 0 :(得分:3)

您需要提前声明load变量。现在,你在匿名函数中声明它两次,变量的范围将限于该函数;从外部函数的角度来看,var load = ...;语句将具有无可观察的效果

请改为尝试:

var load = '1';

if($("input.exist").length > 0){
    $("input.exist").each(function(){
        if($(this).val()==data){
            load='0';
        }else{
            load='1';
        }
    });
}

alert(load);