0

鼠标离开后,自动收报机开始以非常高的速度移动。不知道是什么错误。

Javascript:

$('#tick2').html($('#tick').html());
var temp=0,intervalId=0;
$('#tick li').each(function() {
    var offset=$(this).offset();
    var offsetLeft=offset.left;
    $(this).css({'left':offsetLeft+temp});
    temp=$(this).width()+temp+10;
});
$('#tick').css({'width':temp+40, 'margin-left':'20px'});
temp=0;
$('#tick2 li').each(function(){
    var offset=$(this).offset();
    var offsetLeft=offset.left;
    $(this).css({'left':offsetLeft+temp});
    temp=$(this).width()+temp+10;
});
$('#tick2').css({'width':temp+40,'margin-left':temp+40});

function abc(a,b) {  
    $('#outer').mouseenter(function() { window.clearInterval(intervalId);intervalId=0; });
    $('#outer').mouseleave(function() { start(); })
    var marginLefta=(parseInt($("#"+a).css('marginLeft')));
    var marginLeftb=(parseInt($("#"+b).css('marginLeft')));
    if((-marginLefta<=$("#"+a).width())&&(-marginLefta<=$("#"+a).width())){
        $("#"+a).css({'margin-left':(marginLefta-1)+'px'});
    } else {
        $("#"+a).css({'margin-left':temp});
    }
    if((-marginLeftb<=$("#"+b).width())){
        $("#"+b).css({'margin-left':(marginLeftb-1)+'px'});
    } else {
        $("#"+b).css({'margin-left':temp});
    }
} 

function start() { intervalId = window.setInterval(function() { abc('tick','tick2'); }, 10) }

start();

您可以在此处查看工作演示:http: //jsfiddle.net/mstoic/juJK2/

4

1 回答 1

0

好吧,你差点炸毁我的浏览器!你可以试试这个:

 function abc(a,b) {  

var marginLefta=(parseInt($("#"+a).css('marginLeft')));
var marginLeftb=(parseInt($("#"+b).css('marginLeft')));
if((-marginLefta<=$("#"+a).width())&&(-marginLefta<=$("#"+a).width())){
    $("#"+a).css({'margin-left':(marginLefta-1)+'px'});
} else {
    $("#"+a).css({'margin-left':temp});
}
if((-marginLeftb<=$("#"+b).width())){
    $("#"+b).css({'margin-left':(marginLeftb-1)+'px'});
} else {
    $("#"+b).css({'margin-left':temp});
}
} 

 function start() { intervalId = window.setInterval(function() { abc('tick','tick2'); }, 10) }

 $(function(){
      $('#outer').mouseenter(function() { window.clearInterval(intervalId); });
      $('#outer').mouseleave(function() { start(); })
      start();
 });

工作小提琴:http: //jsfiddle.net/juJK2/1/

您应该只绑定一次事件处理程序,而不是每次输入abc()

于 2013-09-23T17:18:32.930 回答