jQuery如果什么也不做其他事情

时间:2012-12-04 20:37:25

标签: jquery css

我有一个snippit来根据点击改变节点的margin-left

$("#left").click(function(){
    var slidewidth = $('#slide_box').attr('width'),
        slideleft = $('#slide_box').attr('margin-left');
    if (slideleft == 0) {
    }
    else {
        $("#slide_box").animate({"margin-left": "+=135px"}, "fast");
    } 
});

现在,如果slideleft == 0,它不应该做任何事情。但确实如此。但是,在计算var slidewidth时,它会返回0还是0px?我如何在if参数中定义该值?当我尝试if (slideleft == 0px)时,它只是杀了剧本。

5 个答案:

答案 0 :(得分:2)

我认为您没有使用正确的方法来获取widthmargin-left值;两者都是css值而不是元素上的属性,.attr()只会获取元素属性(除非你真的在元素上设置一个属性,这些名称将来可能会非常混乱)。相反,试试这个:

$("#left").click(function(){
    var slidewidth = $('#slide_box').css('width'),
        slideleft = $('#slide_box').css('margin-left'); 
    /* or alternatively:
       var slidewidth = parseInt($('#slide_box').css('width'),10),
        slideleft = parseInt($('#slide_box').css('margin-left'), 10); 
     */
    if (slideleft == '0px' /* with parseInt values you would just need 0 here*/) {
    }
    else {
        $("#slide_box").animate({"margin-left": "+=135px"}, "fast");
    } 
});

答案 1 :(得分:1)

您可以使用$('#slide_box').css('margin-left')而不是$('#slide_box').attr('margin-left')来获取保证金并使用slideleft === '0px'进行测试

答案 2 :(得分:0)

试试这个:

if (slideleft === '0px')

答案 3 :(得分:0)

您可以执行console.log(slidewidth)检查输出。我很确定它会是0px而不是0.

答案 4 :(得分:0)

if ( parseInt(slideleft,10) === 0) {

最好使用parseInt将其转换为数字。这样就可以解决模糊问题..

只是if ( +slideleft === 0) {