jQuery在animate on click事件后增加css属性的值
jQuery incrementing value of css property after animate on click event
我想根据元素顶部的属性margin,实现从下到下的显示和渐变效果,但我没有想要的结果。第一次淡入淡出时效果很好。但当我第二次执行它时,属性的值比它应该的值大了10倍。每次我点击出现和淡出时,当我再次点击出现时,它比上次多了10倍。如果不增加该值,我该怎么办?代码在上面。有人帮帮我,求你了!谢谢
$(document).on("click",".nav-menu",function(){
var $initial_margin_top = $(".w-clearfix.nav-menu-ul").css("margin-top");
var $margin_num = parseInt($initial_margin_top.split("px")[0]) + 10;
if($(this).hasClass("nav-menu-hover")){
$(".w-clearfix.nav-menu-ul").animate({"margin-top": $margin_num+"px","opacity":"0"});
$(".w-clearfix.nav-menu-ul").css({"margin-top": $initial_margin_top});
$(this).removeClass("nav-menu-hover");
}else if(!$(this).hasClass("nav-menu-hover")){
$(this).addClass("nav-menu-hover");
$(".w-clearfix.nav-menu-ul").css({"margin-top": $margin_num+"px" ,"opacity":"0"});
$(".w-clearfix.nav-menu-ul").removeClass("hide");
$(".w-clearfix.nav-menu-ul").animate({"margin-top": $initial_margin_top,"opacity":"1","margin-left":"-1px"});
$(".w-clearfix.nav-menu-ul").css({"margin-top": $initial_margin_top});
}
});
这一行是您的问题:
var $margin_num = parseInt($initial_margin_top.split("px")[0]) + 10;
问题是,你每次都会增加值而不重置它。你需要以某种方式存储原始值,并在每次运行此函数时恢复到原始值。
首先想到的是,将原始值存储在要更改的元素内的属性中,并为其命名为"data-num
"。所以你可以有例如:
<div width="50px" data-num="50px"></div>
祝你好运。
您的问题在于这行代码:
var $margin_num = parseInt($initial_margin_top.split("px")[0]) + 10;
每次单击导航菜单项时,初始值都会增加10,因为它位于单击处理程序中。
为了防止这种情况,请在单击函数外声明一次初始边距。
相关文章:
- 如何使用css动画从中心增加边界线
- 使用循环增加css属性值
- CSS转换未在增加高度时更新背景色
- 在jquery中使用css对象增加宽度
- jQuery在animate on click事件后增加css属性的值
- 如何按 JS 变量的值增加 CSS 值
- 使用 jQuery/JavaScript 单击时增加/减少 CSS 宽度
- 单击按钮时增加CSS矩阵
- CSS高度:无法增加父类的高度
- 增加HTML/CSS/JS中输入字段的大小
- HTML CSS JS |一旦某个元素被点击,z-index值增加+1
- CSS或jQuery悬停效果,增加固定框和显示绝对位置的较大版本
- Css保持表格宽度保持不变,而用户按ctrl +在chrome上增加字体大小
- CSS和JS:如何在网格中增加贴图的大小
- Javascript增加/减少字体大小(外部css)
- CSS:如果p的高度覆盖,则增加父级宽度
- 如何在单击时重复增加 CSS 属性的值
- CSS冲突与JavaScript函数增加减少字体大小
- 如何使用jQuery增加CSS Y位置坐标
- 添加/删除CSS会导致IE9增加表格的高度