2012-12-04 16 views
0

我有一个SNIPPIT改变基于点击的节点的margin-leftjQuery的,如果什么都不要做,做一些

$("#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)它只是杀死了剧本。

+1

只是为了帮助你在未来。任何调试这样的简单方法是使用'console.debug',你可以看到自己的价值。 – thatidiotguy

+1

帖子的标题很不明确。您是否尝试过如果(slideleft =='0px')' – BlackCursor

+0

快速查看slideleft究竟是在浏览器控制台中打印变量(Firefox中的firebug还是IE中的开发人员工具),或者使用方便的窗口.alert(“Slideleft =”+ slideleft) – scrappedcola

回答

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"); 
    } 
}); 
+0

“parseInt values”是什么意思? – Plummer

+0

抱歉,我打算输入“with parseInt values”,即通过使用我在“/ *或其他...”下注释的代码获得的值。 – scrappedcola

+0

Parseint值是您通过parseInt($(' #slide_box').css('width'),10) – scrappedcola

0

试试这个:

if (slideleft === '0px') 
0

你可以做一个console.log(slidewidth)检查输出。我敢肯定,这将是0像素不为0

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

更好的使用parseInt将其转换成一个数..这样,它就能解决问题的暧昧..

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

1

您可以使用$('#slide_box').css('margin-left'),而不是使用$('#slide_box').attr('margin-left')拿到保证金和测试slideleft === '0px'

+0

更改为'.css'解决了问题。 – Plummer