我正在尝试通过使用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");
}
});
});
答案 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");
}
});
});