2009-07-30 7 views
5
$(this).css("left","100px"); 

function endless(){ 
    $(this).animate({ 
     left:'-=100px', 
    },{ 
     easing: "linear", 
    duration: 5000, 
    complete: function() { 
     $(this).css('left','100px'); 
    endless(); 
     } 
    }); 
}; 
endless(); 

Đây là những gì tôi đã thử, nhưng sử dụng cách tiếp cận này, tôi không thể chuyển nội dung. Im 'bằng jQuery 1.3.2. Bất kỳ đề xuất nào?Làm cách nào để chạy hàm .animate trong jQuery mãi mãi?

Trả lời

3

Bạn có các tham số để tạo hiệu ứng sai. Nó không có một băm tùy chọn, chỉ là các tùy chọn thực tế để giảm bớt, thời lượng và gọi lại. Ngoài ra, bạn cần phải cẩn thận khi sử dụng this. Tốt hơn để vượt qua nó như là một đối số cho các chức năng vô tận.

$(this).css("left","100px"); 

function endless(elem){ 
    $(elem).animate(
     { left:'-=100px' }, 
     "linear", 
     5000, 
     function() { 
      $(elem).css('left','100px'); 
      endless(elem); 
     } 
    ); 
}; 
endless(this); 
2

Bạn sẽ cần phải gọi vô tận() từ trong một cuộc gọi lại.

function endless(item) { 
    $(item).animate({"left": "-=100px"}, 5000, "linear", function(){ 
    $(item).css("left","100px"); 
    endless(item); 
    }); 
} 

endless($(".myBox")); 
0

Bạn cần thay thế $(this) bằng bộ chọn thành phần tử mà bạn muốn tạo hiệu ứng động.

0

Tuyệt vời! đây chính xác là những gì tôi đã tìm kiếm, nhưng bây giờ,

cuối cùng tôi đã tìm ra cách chuyển đổi nó. với chức năng sau, gọi vô tận (0) để dừng và vô tận (1) để kích hoạt vòng lặp hoạt hình.

//loop animation forever 
//args: takes 1 to loop, 0 to stop 
function endless(loop) 
{ 
    //animate forever 
    if (loop==1) 
    { 
$('#alink').animate(
    {'opacity':'toggle'}, 
    1000, 
    function() { endless(1) } 
); 
    } 
    //stop animation 
    else 
    { 
$('#alink').css('opacity',1).stop(); 
    } 

}; 


//sample call 
$('#alink').toggle(function(){ endless(1) },function(){ endless(0) }); 

thanx cho mã ban đầu!