我有一个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)
时,它只是杀了剧本。
答案 0 :(得分:2)
我认为您没有使用正确的方法来获取width
和margin-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) {