Jquery:尝试使用div的高度来计算增量动画事件的距离

时间:2012-02-08 00:59:32

标签: jquery variables height jquery-animate increment

解决(见下文)

$(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,则不会向上滚动。

1 个答案:

答案 0 :(得分:1)

parseInt(("#text").css("marginTop"));缺少$。它应该是parseInt($("#text").css("marginTop"));

$("#text").animate({marginTop: '-='moveIt}, 500);也不正确,您缺少+符号来编制字符串。它应该是:$("#text").animate({marginTop: '-=' + moveIt}, 500);

如果这不能解决您的问题,那么我建议您设置JSFiddle代码。