【问题标题】:How to use the function .toggle?如何使用 .toggle 功能?
【发布时间】:2013-05-14 12:37:13
【问题描述】:

如何用.animate制作倒车动画? 我在其他地方读到了函数.toggle,但是当我使用它时,这个函数会自动启动而无需“点击”。我希望它(功能)仅在我(或用户)单击它时才开始。

$(document).ready(function(){
    $("#dae").toggle(
        function(){
            $("#dae").click(function(){
                $("#dae").animate({left:'50px', top:'100px'}, "slow");
                $("#dae").animate({opacity:0.1}, "slow");
                $("#dae").animate({opacity:1.0}, "slow");
            });
        }, function(){
            $("#dae").click(function(){
                $("#dae").animate({opacity:1.0}, "slow");
                $("#dae").animate({opacity:0.1}, "slow");
                $("#dae").animate({left:'10px', top:'20px'}, "slow");
            });
        }
    )
});

问题是:当浏览器启动时,div 消失了。

【问题讨论】:

标签: jquery function jquery-animate


【解决方案1】:

您不需要切换中的“点击”事件。 .toggle() 基于点击事件。

所以这样设置:

$("#dae").toggle(
    function(){

            $(this).animate({left:'50px', top:'100px'}, "slow");
            $(this).animate({opacity:0.1}, "slow");
            $(this).animate({opacity:1.0}, "slow");

    }, function(){

            $(this).animate({opacity:1.0}, "slow");
            $(this).animate({opacity:0.1}, "slow");
            $(this).animate({left:'10px', top:'20px'}, "slow");

    }
)

试试上面的方法,看看它对你有用。如果您有任何问题,请告诉我。

编辑:请注意,如下所示,这在较新的版本中不起作用。的 jquery,因为它不再支持这两个功能。好的和有效的观点。

【讨论】:

  • 我做了这个,但是当我点击它时,div“dae”没有任何反应......可能是什么?
  • 一会儿我会为你创建一个 jsfiddle。
  • @TopGear3000 您可能需要采取不同的方法,请参阅我的回答。
  • 让我们澄清一下。因为我有它的工作,但这不能是你想要的。因为它会切换,但您定义的动画方式只是隐藏它。如解释每一步页面加载会发生什么。他们点击然后会发生什么等。
【解决方案2】:

试试这个:-

我不确定您使用的是哪个 jquery 版本,但 .toggle() 不再需要 2 个回调。此外,您需要在单击而不是执行切换时执行此操作,这就是您看到它最初自己执行的原因。

Demo

$("#dae").click(function(){
    var $this = $(this);
    if ($this.is('.animate')) //Just add this class to detect the state.
    {
       
            $this.animate({left:'50px', top:'100px'}, "slow")
             .animate({opacity:0.1}, "slow")
             .animate({opacity:1.0}, "slow");
     }
    else
    {
         $this.animate({opacity:1.0}, "slow")
         .animate({opacity:0.1}, "slow")
         .animate({left:'10px', top:'20px'}, "slow");
    }
   $this.toggleClass('animate'); //add/remove class based on its previous state.
});

【讨论】:

  • +1 @PSL 在多重回调上。他发布了两者,所以我做出了可能不应该的假设。你也可以这样做,因为 PSL 已经注意到使用 data() 的点击事件如果你不想使用一个类也可以正常工作。
  • 另一件事是切换不再支持多回调,因此即使 OP 使用旧版本的 Jquery,一旦他升级它也会失败。所以需要手动处理。我没有得到你的 +1 :)
  • 刚刚测试过,说它在 1.6 中工作,不管他应该完全改变设计。
猜你喜欢
  • 2016-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多