大家好,我有这个代码:
$('#riscButton, #eneButton, #giardButton').one("click", function(){
$('.content').animate(
{"height":"+=620px"},
500,
'easeOutBounce');
$('#eneButton').animate(
{ "top":"+=310px"},
1500,
'easeInOutExpo');
$('#eneButton').animate(
{"left":"-=310px"},
1500,
'easeOutBounce')
$('#giardButton').animate(
{"top":"+=620px"},
2000,
'easeInOutExpo')
});
如您所见,如果有人单击按钮,则必须发生动画,单击哪个按钮并不重要,您具有相同的动画。 使用 one() 我对只需要单击一次的按钮说,事情是这样的,我怎么能对脚本说,如果您按下一个按钮,甚至其他按钮也必须被禁用?现在,例如,如果我单击第一个按钮,动画就会发生,好吧,如果我重新单击相同的按钮,则没有任何反应,但是如果我单击第二个或第三个按钮,动画将再次开始。我该如何解决它?
您必须从所有元素中取消绑定事件,而不仅仅是您单击的元素:
$('#a, #b, #c').click(function() {
alert('clicked');
$('#a, #b, #c').off('click');
});
演示:http://jsfiddle.net/peFff/3/
更好的解决方案是使用类:
$('.clickable').click(function() {
alert('clicked');
$('.clickable').off('click');
});
演示:http://jsfiddle.net/peFff/5/
第一次点击时,您只需将一个类添加到容器标记中,表示已单击一个按钮。在随后的单击中,在调用动画之前检查容器是否具有该类。
使用选择器。例如:$('#riscButton, #eneButton, #giardButton').attr('disabled','disabled')
函数中。该选择器会返回一个包含所有按钮的数组...然后你应该解开按钮的绑定...通过做$('#riscButton, #eneButton, #giardButton').off('click.button')
将 .button 添加到事件名称以使其命名空间并使其更易于查找(它还将避免取消绑定不需要的事件处理程序)。
最后注意:最后,如果你必须做一些事情,比如$('#a,#b,#c')
作为选择器,你应该考虑使用一个类(只是让代码更好)