解决(见下文)
$(function () {
var textHi = $('#text').height();
var moveIt = textHi / 5;
var margH = parseInt(("#text").css("marginTop"));
margH = Math.abs(margH);
$("#down").mousehold(function(){
if (margH === textHi) {
return false;
} else {
$("#text").animate({marginTop: '-='moveIt}, 500);
}
});
$("#up").mousehold(function(){
if (margH === 0){
return false;
} else {
$("#text").animate({marginTop: '+='moveIt}, 500);
}
});
});
我在DIV的两侧都有两个按钮。当我使用常规数字向上或向下递增div并根据一个简单的递增变量停止/启动它时,它可以正常工作。
虽然,由于DIV的大小不同,内容的数量不同,我想拿起当前的div高度(textHi),然后除以一个数量,即5(moveIt),然后使用它变量在事件上上下移动div。然后我想获得当前的保证金最高值并将其用作div的位置指示器,即当保证金顶部为“0”时,向上按钮不起作用,因为这会将其推得太远。或者一旦保证金顶部变得相等(负面,但我将其转换为正数,因为没有实际的'正'保证金顶部),它会进一步下降,因为它会使div永远滚动。
由于某种原因,变量正在运行,并且没有发生增量。
任何想法都会很棒,谢谢。
根据答案的方向,解决了这个问题:
$(function () {
var textHi = $('#text').height();
var moveIt = textHi / 8;
var timing = moveIt * 5;
var intVal = 0;
$("#down").mousehold(function(){
if (intVal === 7) {
return false;
} else {
$("#text").animate({marginTop: '-=' + moveIt}, timing);
intVal = intVal + 1;
}
});
$("#up").mousehold(function(){
if (intVal == 0){
return false;
} else {
$("#text").animate({marginTop: '+=' + moveIt}, timing);
intVal = intVal - 1;
}
});
});
如您所见,我使用了一个递增变量来启动动画。当div向下滚动时,它达到其总高度的7/8并停止。如果增量为0,则不会向上滚动。
答案 0 :(得分:1)
parseInt(("#text").css("marginTop"));
缺少$
。它应该是parseInt($("#text").css("marginTop"));
。
$("#text").animate({marginTop: '-='moveIt}, 500);
也不正确,您缺少+
符号来编制字符串。它应该是:$("#text").animate({marginTop: '-=' + moveIt}, 500);
如果这不能解决您的问题,那么我建议您设置JSFiddle代码。