条件是否有效?

时间:2015-07-28 13:40:28

标签: javascript jquery

在我的生活中,我从未见过,我的条件不想工作,这是我的JavaScript代码:

//Remove todos os elementos relacionados a frete
function removeAllFrete(callback){
    var a = $(".remove-frete").length;
    for (i = 0; i < a; ++i) {
        $(".remove-frete").each(function(){
            $(this).animate({
                opacity: 0
            }, function(){
                $(this).slideUp(function(){
                    $(this).remove();
                });
            });
            if ( i == a - 1 && typeof(callback) === "function" ){
                return(callback());
            }
        });
    }
}

//Exibe o formulário de busca de CEP
function buscarCEP(msg, callback){

    function showSearchForm(){
        el = $("<div class=\"frete-form remove-frete\"><div class=\"form-group no-margin-last\"><input type=\"text\" class=\"text-input\" placeholder=\"Endereço\"><input type=\"text\" class=\"text-input\" placeholder=\"Cidade\"><input type=\"text\" class=\"text-input\" placeholder=\"Estado\"><input id=\"frete-search-trigger\" type=\"submit\" class=\"submit-input\" value=\"Pesquisar\"></div></div>")

        $(".frete-cont").append(el);

        el.slideDown(function(){
            $(this).animate({
                opacity: 1
            }, function(){
                $("#frete-search-trigger").on("click", function(e){
                    e.preventDefault();
                    removeAllFrete();
                });
            });
        });
    }

    if ( msg != null){
        var elR = $("<div class=\"frete-no-result remove-frete\">" + msg + "</div>");

        $(".frete-cont").append(elR);

        elR.slideDown(function(){
            $(this).animate({
                opacity: 1
            }, function(){
                showSearchForm();
            });
        });
    } else{
        showSearchForm();
    }
}

$("#frete-forget-trigger").on("click", function(e){
    e.preventDefault();

    console.log("a");
    if( $(".frete-form").length ){
        console.log("1");
        removeAllFrete();
    } else{
        removeAllFrete(function(){
            console.log("2");
            buscarCEP(null);
        });
    }
});

在这里你可以找到一个小提琴:http://jsfiddle.net/5hjhxm09/

知道可能是什么?

我的错误,请查看下面的答案......

在这里你可以找到一个小提琴:http://jsfiddle.net/5hjhxm09/4/

3 个答案:

答案 0 :(得分:0)

问题不在条件中,而是在for循环中:

$(".remove-frete").length === 0

答案 1 :(得分:0)

click  $("#frete-forget-trigger") 

然后

 console.log("a");

// $(".frete-form").length =0

然后运行

removeAllFrete(function(){
        console.log("2");
        buscarCEP(null);
    });
}

然后运行removeAllFrete

var a = $(".remove-frete").length;

// a = 0


for (i = 0; i < a; ++i) {
        ...

}

END

一切正常,点击并安装

答案 2 :(得分:0)

问题出在removeAllFrete()函数内的条件中:

if ( i == a - 1 && typeof(callback) === "function" ){
    return(callback());
}

当我更改以下条件的触发器时,它正常工作:

$("#frete-forget-trigger").on("click", function(e){
    e.preventDefault();

    console.log("a");
    if( $(".remove-frete").length ){
        console.log("1");
        removeAllFrete();
    } else{
        console.log("2");
        buscarCEP(null);
    }
});