我想知道如何保护jQuery .click()(或其他)事件到spawm。
我在JSFiddle中创建了一个项目文件,你可以在上面设置它。如果您始终可以点击<body>
下一个<li>
项,则始终获得.curr-str
课程,但动画尚未完成。
我试试这个:
if($('body').is(':animated'){
alert("animate is progress, wait");
}
但它不起作用......
测试代码:
HTML:
<div class="list">
<ul>
<li class="curr-str">JavaScript</li>
<li>JavaScript</li>
<li>JavaScript</li>
<li>JavaScript</li>
</ul>
</div>
CSS:
.curr-str{
background-color:green;
}
使用Javascript:
$( 'body' ).click(function() {
$current = $(".curr-str");
$( $current ).next('li').addClass('curr-str').fadeOut(5000);
});
答案 0 :(得分:2)
使用.one()
代替.click()
并在.fadeOut()
的完整回调中重新注册事件处理程序
$(function () {
var body = $("body");
body.one("click", removeListElement);
function removeListElement() {
var current = $(".curr-str");
$(current).next('li').addClass('curr-str').fadeOut(5000, function() {
body.one("click", removeListElement);
});
}
});
.curr-str {
background-color:green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="list">
<ul>
<li class="curr-str">JavaScript</li>
<li>JavaScript</li>
<li>JavaScript</li>
<li>JavaScript</li>
</ul>
</div>