【问题标题】:Prevent animation if an element unless an element is at a specific position除非元素位于特定位置,否则如果元素阻止动画
【发布时间】:2011-09-22 20:50:07
【问题描述】:

我试图阻止动画触发,除非容器 div #opts 位于指定的“左侧”位置。

我尝试了 .offset() 和 .position() 方法,但无济于事。无论“左”位置是什么,元素都会继续向右或向左移动(取决于可见和单击的“选项卡”)。

在这个test page上,我已经放慢了动画的速度,这样你就可以自己试一试了……只需在动画开始和结束之间点击左上角的“文本选项卡”几次,然后它将继续向右/向左移动,无论其左侧位置如何。

JS:

$( "#optsdiv" ).hide();
$( "#closediv" ).hide();
var p = $( "#opts" );
var offset = p.offset();

if( offset.left == 0 )
  $( "#opendiv" ).click( function() {
    $( "#opts" ).animate( { left: "+=100px", opacity: 1 }, 1400, "easeOutExpo", function() {
       $( "#opendiv" ).hide();
       $( "#closediv" ).show();
      });
  });

if( offset.left == 100 )    
  $( "#closediv" ).click( function() {
    $( "#opts" ).animate( { left: "-=100px", opacity: 0.6 }, 1400, "easeOutExpo", function() {
      $( "#closediv" ).hide();
      $( "#opendiv" ).show();
     });
  });

关于我做错了什么或防止动画将标签完全移出屏幕或向右太远的更好方法的任何想法?

【问题讨论】:

    标签: jquery jquery-animate conditional


    【解决方案1】:

    尝试使用left: "100px"left: "0px" 而不是+=100px-=100px

    这样,您将动画到特定位置,而不是从当前位置添加或减去。

    【讨论】:

    • 酷,成功了!现在,例如,如果多次单击“打开选项卡”,则单击“关闭选项卡”后需要一段时间才能开始动画。我该如何防止这种情况发生?我认为这与动画排队有关???
    • if ( $('#opts').is(':animated') ) return false; 将其添加为点击函数中的第一行。
    猜你喜欢
    • 2020-03-24
    • 2015-01-09
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 2011-12-14
    相关资源
    最近更新 更多