jQuery单击并为此设置动画

时间:2014-04-09 14:04:31

标签: jquery click jquery-animate this

我想为我点击的按钮添加动画效果。它有类.testclass。我有多个具有该名称的按钮,这就是为什么我需要指定正确的按钮。为什么“这个”在这里不起作用?

问题是我需要在函数中调用“this”,因为我想要一个动画循环。

CoffeeScript的:

$('.testclass').click ->
        colorFader = ->
            $(this).animate
                backgroundColor: '#33e27d', 1000, 'linear', ->
                    $(this).animate
                        backgroundColor: '#27ae60', 1000, 'linear', colorFader
        colorFader()
好吧,在javascript中应该看起来像这样:

$('.testclass').click(function() {
  var colorFader;
  colorFader = function() {
    return $(this).animate({
      backgroundColor: '#33e27d'
    }, 1000, 'linear', function() {
      return $(this).animate({
        backgroundColor: '#27ae60'
      }, 1000, 'linear', colorFader);
    });
  };
  return colorFader();
});

5 个答案:

答案 0 :(得分:0)

为什么你在动画中有动画? 这通常是我的动画方式:

jQuery(".one_of_my_buttons").on("click",function()
{
      jQuery(this).animate({left: "100px"}, 500, function() {
        // Animation complete.  
      });
});

答案 1 :(得分:0)

$(document).ready(function(){
    $(".classname").click(function() {
    $(this).animate({{letterSpacing:"+=10px"}}, 1000);
    });
});

答案 2 :(得分:0)

是您可以在click事件中调用函数,如下所示

$(document).ready(function(){
    $(".classname").click(function() {
    $(this).animate({letterSpacing:"+=10px"}, 1000);
    anyfunctionname();
    });
});

答案 3 :(得分:0)

确定。我有答案。

这是正确的代码,如何将其添加到函数中。

$('.testclass').click ->
        colorthis = $(this)
        colorFader = ->
            colorthis.animate
                backgroundColor: '#33e27d', 1000, 'linear', ->
                    colorthis.animate
                        backgroundColor: '#27ae60', 1000, 'linear', colorFader
        colorFader()

答案 4 :(得分:0)

您可以将按钮值传递给该功能,然后您可以单独设置所选按钮的动画。

<input type="button" onclick="colorfadar(this.value)" class="one" Value="Save">
<input type="button" onclick="colorfadar(this.value)" class="one" Value="Delete">

 <script type="text/javascript">
        var cols1 = "#ffcc00,#eeeeee,#3b5998".split(",");
        var cols = "500,200,300".split(",");
        var cPos = 0;

    function colorfadar(str)  { 
        $('input[value="'+str+'"]').animate({backgroundColor:cols1[cPos],width:cols[cPos]},1000);
        cPos++
        if (cPos == cols.length) {
            cPos = 0
        }
        window.setTimeout(function() { colorfadar(str) }, 500)
    }

</script>

希望这会有所帮助