使div只能点击一次

时间:2016-02-17 09:46:45

标签: jquery html css animation clickable

我有一个函数,当点击div时,动画就会继续。 我希望用户只能点击一次,以便在每次点击时都不加载该动画。也许一个div可点击一次或者if在函数中但是我的代码不是那么好:)。

这是代码

$(function() {    
    $('#valerie').click(function() {

        $('.logo').animate({
            'left': 3 + '%'
        }, 900);
        $('#title2').animate({
            'font-size': 40 + 'px',
            'top': 42 + '%'
        }, 900);
        $('body').css({
            'overflow': "auto"
        }, 20);
    });
});

6 个答案:

答案 0 :(得分:3)

使用jQuery .one()

$('#valerie').one('click', function() {
    $('.logo').animate({'left':  3    + '%'},900);
    $('#title2').animate({'font-size': 40 + 'px','top': 42 + '%'},900);
    $('body').css({'overflow': "auto" },20);
});

答案 1 :(得分:1)

您可以在该事件的逻辑之后尝试.off(事件)

$('#valerie').on('click', function () {
        $('.logo').animate({
            'left': 3 + '%'
        }, 900);
        $('#title2').animate({
            'font-size': 40 + 'px',
            'top': 42 + '%'
        }, 900);
        $('body').css({
            'overflow': "auto"
        }, 20);

        $(this).off(event);
    });

答案 2 :(得分:0)

您可以使用one()方法作为@Azim建议,或者如果您想在请求新动画后结束动画,则可以使用stop()

$('#valerie').on('click', function() {

    $('.logo').stop().animate({
        'left': 3 + '%'
    }, 900);
    $('#title2').stop().animate({
        'font-size': 40 + 'px',
        'top': 42 + '%'
    }, 900);
    $('body').css({
        'overflow': "auto"
    }, 20);


});

这是因为我不确定你只需要动画一次,或者你需要在结束后避免多个动画。

答案 3 :(得分:0)

使用jquery one()

<ng-map id="map" default-style="true" center="-25.363882,131.044922" zoom="4">
      <marker id="marker1" position="-25.363882,131.044922"
        on-click="map.showInfoWindow('bar')">
      </marker>
      <info-window id="bar">
        <div ng-non-bindable>
          Bla bla
        </div>
      </info-window>
</ng-map>

答案 4 :(得分:0)

一次点击事件在jquery中有一个.one方法。

$('#valerie').one('click', function() {

    $('.logo').animate({
        'left': 3 + '%'
    }, 900);
    $('#title2').animate({
        'font-size': 40 + 'px',
        'top': 42 + '%'
    }, 900);
    $('body').css({
        'overflow': "auto"
    }, 20);

   });

答案 5 :(得分:0)

您可以使用:animated

$('#valerie').click(function() {
    if($(':animated').length || $('body').css('overflow') === "auto"){// <---add this 
        return; 
    }  
    $('.logo').animate({'left':  3    + '%'},900);
    $('#title2').animate({'font-size': 40 + 'px','top': 42 + '%'},900);
    $('body').css({'overflow': "auto" },20);
});
相关问题