使用基于ajax响应的查询切换类

时间:2013-12-06 04:40:09

标签: javascript php jquery ajax

我正在使用对我的functions.php文件的ajax调用来查询数据库并查明字段“is_recurring”是1还是0. 1或0来自下拉选择。根据从php函数返回的内容,我试图在我的div中添加和删除“hide”类,其中显示了一些文本。

有没有更好的方法来编写此代码?此外,如果我来回选择下拉菜单几次,它似乎感到困惑,并没有正确添加/删除类。任何建议都将不胜感激。

var request = $.ajax({
    type: "POST",
    url: 'inc/functions.php',
    data: {action: "toggle", category:category}
}); 
request.done(function(response){
    if(response == 1) {
        if($('#toggle').hasClass("hide")) {
            $('#toggle').hide().removeClass("hide").fadeIn(900);      
        } else { 
            $('#toggle').fadeOut(900).addClass("hide");
        };
    } else if(response != 1) {
        if($('#toggle').hasClass("hide")) {
            exit;           
        } else {
            $('#toggle').fadeOut(900).removeClass("hide"); 
        };
    };
}); 

3 个答案:

答案 0 :(得分:1)

更好的方法是不要多次遍历DOM:

request.done(function(response){
    var ele = $('#toggle');
    if(response == 1) {
        if(ele.hasClass("hide")) {
            ele.hide().removeClass("hide").fadeIn(900);      
        } else { 
            ele.fadeOut(900).addClass("hide");
        };
    } else if(response != 1) {
        if(ele.hasClass("hide")) {
            exit;           
        } else {
           ele.fadeOut(900).removeClass("hide"); 
        };
    };
}); 

答案 1 :(得分:0)

尝试:

if(response == 1) {
    $('#toggle').removeClass('.hide').fadeIn();
}
else{
    $('#toggle').addClass('.hide').fadeOut();
}

答案 2 :(得分:0)

根据@ Tyagi的建议,这是我最终使用的代码,并进行了一些修改。

request.done(function(response){
    var ele = $('#toggle');
    if(response == 1) {
        if(ele.hasClass("hide")) {
            ele.hide().removeClass("hide").fadeIn(900);      
        } else { 
            exit;
        };
    } else if(response != 1) {
        if(ele.hasClass("hide")) {
            exit;           
        } else {
           ele.fadeOut(900).addClass("hide"); 
        };
    };
});