在第一次单击动画时,在第二次反向动画时:如何
On first click animate, on second reverse animation: how to?
我读过其他几个类似的问题,但它们基本上使用了不推荐使用的.toggle()
函数。我正在努力实现div#p
在第一次点击时向右移动,在第二次点击时返回起始位置。
我写了这个代码:
$(function(){
$("#p").on("click", function(){
if ($("#p").data("right") == 'n') {
$("#p").animate({marginLeft:"50"}, 500);
$("#p").data("right", 'y');
} else {
$("#p").animate({marginLeft:"0"}, 500);
$("#p").data("right", 'n');
}
})
})
它正在工作,有一个大错误:页面加载后,第一次单击不触发任何东西。(第二次和其他单击将正确切换动画动作)。
这里有什么问题,如何纠正?
$(function(){
$("#p").on("click", function(){
var state = parseInt( $(this).css('margin-left'), 10 ) > 0;
$(this).animate({marginLeft : state ? 0 : 50}, 500);
});
});
或有数据,并说明未定义的数据值:
$(function(){
$("#p").on("click", function(){
var state = $(this).data("right");
$(this).animate({marginLeft: (state ? 50 : 0)}, 500);
$(this).data("right", !state);
});
});
您正在尝试获取data-right
,但我认为您还没有设置。您应该在加载页面时设置它,以便实际检索它。使用.ready()
或将data-right
添加到<p>
我用这个线程中的想法编写了类似的代码。这是针对1div的,但可以像您在该线程中使用的那样重写为标记"p"。
$( ".content" ).click(function() {
if( $( this ).hasClass( "vysun" ) ){
var status = true;
$( this ).removeClass( "vysun" );
}
else{
var status = false;
$( this ).addClass( "vysun" );
}
$( this ).animate({width : status ? "33%" : "100px"}, 1500, "linear");
});
相关文章:
- 如何设置html元素填充的动画
- 如何使用动画实现纸张推车
- 如何在生成下载文件时显示加载动画
- 如何使用jQuery在动画中期加速动画
- 如何使用css动画/javascript使具有背景图像的元素出现
- 如何使用css动画从中心增加边界线
- 如何正确编程jQuery动画与平滑(导航栏)
- 如何在屏幕外或项目的中心视口中跟随YUI驱动的动画
- 如何抽象JQuery动画方法
- 如何设置自定义垂直滑块Jquery的动画
- 如何在一个元素动画之后延迟
- Edge动画:如何将javascript移动到html中
- 简单的jQuery淡入淡出动画 - 如何显示/隐藏DIVS
- 谷歌图表转换动画:如何在重新绘制图表时更改轴标签
- 使用KineticJS在HTML5画布上进行线性动画.如何制作
- JavaScript附加SVG动画.如何启动它们
- 基于滚动的动画:如何创建它们
- 使用Canvas设置圆形动画-如何展开以填充整个视口
- Html5 画布动画.如何在它到达末尾时重置矩形
- jQuery动画.如何让它在每次旋转滑梯中重新开始