Daz*_*olt 3 jquery delay fadeout fadein
我一直坚持一个小问题,当我点击其他块时,我想淡出特定块,然后等待2.5秒并淡出特定块.这是我到目前为止的代码:
$('button.other-block').click(function () {
$(this)
.find('.specific-block')
.fadeIn()
.delay(2500).queue(function() {$(this).fadeOut(1600, complete)});
});
Run Code Online (Sandbox Code Playgroud)
fadeIn就好了,延迟功能也运行良好.但是fadeOut似乎不起作用(如果我将它改为.fadeOut(1600)或只是.fadeOut()并不重要)问题可能在哪里?
这是完整的代码,因为上面有更多的简化版本.
HTML:
<div class="account-edit-group">
<input type="text" value="" class="account-edit-field">
<div>
<button class="account-edit-field-save"> </button><button class="account-edit-field-cancel"> </button>
</div>
<div class="account-edit-field-warning"><span class="w-text">Error! You can enter no more than 30 symbols</span></div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
$('button.account-edit-field-save').click(function () {
var checklength = $(this).parent().parent().find('input.account-edit-field');
if(checklength.val().length > 30)
{
$(this)
.parent()
.parent()
.find('.account-edit-field-warning')
.fadeIn()
.delay(2500).queue(function() {
$(this).fadeOut(1600, complete).dequeue();
});
}
if(checklength.val().length <= 30)
{
$(this)
.parent()
.parent()
.removeClass('acc-edit-f')
}
});
Run Code Online (Sandbox Code Playgroud)
所以JS正在检查点击了哪个按钮,如果点击了按钮保存 - 它会检查上面字段的值.如果有超过30个符号 - 它将显示错误消息.我需要首先淡出,显示一点,然后淡出.这是问题,它不会消失,我不知道为什么.
您可以通过传递这样的回调来等待淡入最先完成:
$('element').fadeIn(function () {
// Fade in complete
});
Run Code Online (Sandbox Code Playgroud)
淡入完成后,您可以继续延迟并淡出.
$('button.other-block').click(function () {
$(this)
.find('.specific-block')
.fadeIn(function () {
$(this).delay(2500).fadeOut(1600, complete);
});
});
Run Code Online (Sandbox Code Playgroud)
如果它不起作用,那么切换到Mootools;)
编辑:工作示例http://jsfiddle.net/tbleckert/RcL5y/