В настоящее время мы пытаемся обновить jquery, используемый на наших веб-страницах, с 1,8 до 1.10.1, но это нарушило некоторые функции на странице. Я смог изолировать фактический код и был удивлен, увидев это. Рекурсивный код анимации, который выполнялся ранее, вызывал ошибку. Ниже приведен код.Рекурсивная анимация: максимальный размер стека вызовов
<script>
$(document).ready(function(){
glowOpenItems(500);
});
function glowOpenItems(duration){
$('#dialog').addClass('glowed',duration, function(){
$(this).removeClass('glowed',duration,function(){glowOpenItems(duration)});
});
}
</script>
<style>
.glowed{
box-shadow: 0px 0px 40px 3px #e14f1c;
}
</style>
<div id="dialog" title="Basic dialog">
<p>Test Code</p>
</div>
При дальнейшем исследовании установлено, что эта вещь работает
$(document).ready(function(){
animate();
});
function animate() {
$('#dialog').animate({backgroundColor:'#ffcc00'}, 500, function(){
$('#dialog').animate({backgroundColor:'#3b5998'}, 500, function(){
animate();
});
});
}
Но всякий раз, когда я изменить метод анимированное addClass подвожу «неперехваченным RangeError: Максимальный размер стека вызовов превышены». Похоже, что в addclass jquery есть изменения. Любая помощь будет оценена.
well arpit Этот код использовался для анимации блока непрерывно (бесконечно), и он работал с более ранней версией jquery. – Avidev9
для просто светящейся непрерывной рекурсии вовсе не является хорошим выбором. вместо этого попробуйте использовать петли. В основном проблема заключается в том, что рекурсия не прерывается. Это вызывает ошибку из-за конечного размера stack.Loops выполнит вашу задачу. – Arpit
добавлено больше информации. И добавил образец рабочего рекурсивного аниматора – Avidev9