我有这些javascript代码,它们在首次加载时就可以正常工作,但如果我在登录尝试失败后(当红色文本可见时)尝试使用它,则不会将它们变成隐藏状态并立即发出警报。
尽管 alert()在代码的底部,但它在 $('。invalid-feed')。css('visibility','hidden');之前执行。
那是为什么?
http://jsfiddle.net/jzpdLv0h/19
$(document).ready(function(){
$("#myButton").click(function(){
$('.invalid-feed').css('visibility', 'hidden');
var status = 'success';
var mySentence1 = $('#firstName').val();
if (mySentence1 === "")
{
$('.invalid-feed#invalid1').css('visibility', 'visible');
status = 'error';
}
var mySentence2 = $('#lastName').val();
if (mySentence2 === "")
{
$('.invalid-feed#invalid2').css('visibility', 'visible');
status = 'error';
}
var mySentence3 = $('#email').val();
if (mySentence3 === "")
{
$('.invalid-feed#invalid3').css('visibility', 'visible');
status = 'error';
}
if (status == 'success')
{
alert("success");
}
});
});
答案 0 :(得分:0)
尽管alert()位于代码的底部,但它是在$('。invalid-feed')。css('visibility','hidden');
之前执行的。
我认为这是因为jQuery从“可见”到“隐藏”的元素过渡的默认持续时间为400毫秒,因此随着它的进行,Javascript解析器将继续处理脚本的其余部分,并到达并实现警报()在400毫秒过去之前。
soktinpk的答案很有帮助,顺便说一句。