如何通过偏移-9999px来隐藏/显示div?

时间:2013-11-05 06:19:16

标签: jquery

我使用以下jQuery脚本来隐藏和显示包含表单部分的div。

目前,该脚本通过删除和/或附加'display:none'来隐藏和显示我的div。我想通过添加/删除'left:-9999px来隐藏/显示它们;位置:绝对'。

有没有办法用这个脚本做到这一点?

$(document).ready(function () {
    var tab_pool = ["tab_Chemical", "tab_Crop", "tab_Physical"];
    var visible = $(".tab:visible").attr('class').split(" ")[1];
    var curr_ind = $.inArray(visible, tab_pool);
    $(".submit").hide();
    $(".back").hide();

    var validator = $('form').validate({
        ignore: 'input[type="button"],input[type="submit"]',
        rules: {
            wat_hl: {
                required: true
            },
            zero_height_ref: {
                required : true
            },
            mas_tras_cof: {
                required: true
            }
        }
    });


    $('.next').click(function () {
        var tab = $(".tab:visible");

        var valid = true;
        $('input', tab).each(function(i, v){
            valid = validator.element(v) && valid;
        });

        if(!valid){
            return;
        }

        if (curr_ind < 2) {
            $(".tab:visible").hide();
            curr_ind = curr_ind + 1;
            $("." + tab_pool[curr_ind]).show();
            $(".submit").hide();
            $(".back").show();
        }
        if (curr_ind == 2) {
            $(".submit").show();
            $(".next").hide();
        }
    });

    $('.back').click(function () {
        if (curr_ind > 0) {
            $(".tab:visible").hide();
            curr_ind = curr_ind - 1;
            $("." + tab_pool[curr_ind]).show();
            $(".submit").hide();
            $(".next").show();
        }
        if (curr_ind == 0) {
            $(".back").hide();
        }
    });   
});

这是jsfiddle

1 个答案:

答案 0 :(得分:1)

.hide()

替换.css({position:"absolute",left:"-9999px"})(或您的显示:无)的所有实例

以及.show()(或您的显示:阻止).css({position:"static",left:"auto"})

的所有实例

这应该有效,除非您的div绝对或相对已经定位。