Ergo:为什么不这样做?
我正在尝试制作动画功能,它必须根据名称改变css div的位置。 例如,产品1不需要改变其顶部位置,产品2不需要改变产品3,而产品3则需要更多。
几个小时一直在努力奋斗!
if($(this).attr("class") = "product1")
{
$(this).cssAnimate({height: '100%',marginBottom:'-350px'}, {duration: 400});
}
else if($(this).attr("class") = "product2")
{
$(this).cssAnimate({top:'-176px',height: '100%',marginBottom:'-350px'}, {duration: 400});
}
else if($(this).attr("class") = "product3")
{
$(this).cssAnimate({top:'-352px',height: '100%',marginBottom:'-350px'}, {duration: 400});
}
else
{
return false;
}
答案 0 :(得分:1)
您需要将“=”更改为“==”才能开始。
答案 1 :(得分:0)
考虑更接近这一点:
var topPx;
var productClass = $(this).attr("class");
switch (productClass) {
case "product1": topPx = "0px"; break;
case "product2": topPx = "-176px"; break;
case "product3": topPx = "-353px"; break;
default: return false;
}
$(this).cssAnimate({
top: topPx,
height: '100%',
marginBottom: '-350px'
}, {
duration: 400
});
有很多方法可以写这个,但我倾向于通信,并消除重复冗余。例如,没有理由继续获取"class"
属性;据推测,它不会在此代码的生命周期内发生变化。 cssAnimate
的参数除了单个条目外是相同的,因此只更改该条目是有意义的。
我对在switch语句中使用return
感到兴奋。选项包括显式比较,检查数组值中是否存在productClass
等。使用类映射到像素偏移量也很容易:
var offsets = {
"product1": "0px",
"product2": "-176px",
"product3": "-353px"
};
var productClass = $(this).attr("class");
var offset = offsets[productClass];
if (offset === undefined) {
return false;
}
$(this).cssAnimate({
top: offset,
height: '100%',
marginBottom: '-350px'
}, {
duration: 400
});
您可能希望将其包装到获取偏移量的方法中,或者可能返回将与默认地图合并的选项地图。