0

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)它时,它只是杀死了脚本。

4

5 回答 5

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");
    } 
});
于 2012-12-04T20:45:39.060 回答
1

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

于 2012-12-04T20:44:30.063 回答
0

尝试这个:

if (slideleft === '0px')
于 2012-12-04T20:39:40.587 回答
0

你可以做一个console.log(slidewidth)检查输出。我很确定它将是 0px 而不是 0。

于 2012-12-04T20:40:05.950 回答
0
if ( parseInt(slideleft,10) === 0) {

最好使用parseInt.. 将其转换为数字。这样它将解决模棱两可的问题..

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

于 2012-12-04T20:41:23.497 回答