有人可以帮助我在jquery if语句中获取div的类吗?

时间:2013-02-23 00:58:58

标签: jquery css3

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;
        }

2 个答案:

答案 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
});

您可能希望将其包装到获取偏移量的方法中,或者可能返回将与默认地图合并的选项地图。