jquery,乘法选择器和OR函数

时间:2012-10-11 18:06:38

标签: jquery function animation click jquery-animate

大家好我有这个代码:

$('#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')
                });

正如您所看到的,如果有人点击按钮,动画必须发生,不重要的是您点击的按钮具有相同的动画。与一个()我说只需要点击一次按钮,这就是问题,我怎么能对脚本说如果你按一个按钮,其他人必须在之后被禁用? 现在例如,如果我点击动画发生的第一个按钮,然后确定,如果我重新点击相同的按钮没有发生任何事情,但如果我点击第二个或第三个按钮,动画将再次启动。我该如何解决?

3 个答案:

答案 0 :(得分:3)

您必须从所有元素中取消绑定事件,而不仅仅是您点击的元素:

$('#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/

答案 1 :(得分:0)

使用选择器。 例如:您的函数中的$('#riscButton, #eneButton, #giardButton').attr('disabled','disabled')。该选择器返回一个包含所有按钮的数组... 然后你应该通过$('#riscButton, #eneButton, #giardButton').off('click.button')

取消绑定按钮

将.button添加到您的活动名称namespace,并使其更容易找到(它还可以避免解除不受欢迎的事件处理程序)。

最后一点:最后如果你必须做$('#a,#b,#c')这样的选择作为选择器,你应该考虑使用一个类(只是让代码更好)

答案 2 :(得分:0)

首次点击时,您只需在容器标记中添加一个类,即单击一个按钮即可。在后续点击中,在调用动画之前检查容器是否具有该类。