JQuery没有达到else语句

时间:2014-01-17 16:35:10

标签: jquery

我正在尝试通过使用display:none来完全隐藏span标记,使用display:none可以完美地工作,只有问题是else语句根本不起作用。我的意思是,它应该警告并显示:阻止但它根本不存在。

$(document).ready(function () {

        $(".compPass").each(function () {

            if ($('.compPass').css("visibility") == "hidden") {
                $('.compPass').css("display", "none");
            } 
            else {
                alert('');
                $('.compPass').css("display", "block");
            }
        });

    });

2 个答案:

答案 0 :(得分:4)

通过引用.each中的$(".compPass"),您在该页面上引用了所有元素。请改用$(this)来引用当前元素:

$(document).ready(function () {
    $(".compPass").each(function () {
        if ($(this).css("visibility") == "hidden") {
            $(this).css("display", "none");
        } 
        else {
            alert('');
            $(this).css("display", "block");
        }
    });
});

您也可以使用.css()的函数重载

将其替换为单个函数
$(".compPass").css("display", function() {
    return $(this).css("visibility") === "hidden" ? "none" : "block";
});

Here is a jsFiddle css重载函数。

答案 1 :(得分:0)

Else语句不起作用,因为您没有按如下方式设置visible属性:

$(document).ready(function () {
    $(".compPass").each(function () {
            if ($('.compPass').css("visibility") == "hidden"){                
                $('.compPass').css("display", "none");
            }else{
                $('.compPass').css("display", "block");
                $('.compPass').css("visibility", "visible");
            }
    });
});

演示http://jsbin.com/oyEhEpoT/1/

与@RGraham建议一样,.comPass将使用类.comPass切换所有html元素。如果你需要使用特定的一个,那么你应该使用像点击功能或任何事件和使用内部:

$(document).ready(function () {
    $(document).on("click", ".comPass", function (e) {
            if ($(this).css("visibility") == "hidden"){                
                $(this).css("display", "none");
            }else{
                $(this).css("display", "block");
                $(this).css("visibility", "visible");
            }
    });
});