jQuery Анимированный обратный вызов не вызывается после анимации?

Я использую jQuery .animate() создать бесконечную карусель. Я использовал .animate() раньше без проблем. Однако на этот раз анимация не завершается.

Это очень простая анимация, меняющаяся margin-left к другому значению. Значение меняется, и мне кажется, что оно завершено, но функция не срабатывает.

Вот мой код:

<script type="text/javascript">
  $("#scrollLeft").click(function(){
      $("#scrollContent").animate(
        {'margin-left':'-714px'},
        {queue:false, duration:500},
        function(){
            alert("finishedLeft");
      });
  });
  $("#scrollRight").click(function(){
      $("#scrollContent").animate(
        {'margin-left':'-1190px'},
        {queue:false, duration:500},
        function(){
            alert("finishedRight");
      });
  });
</script>

Проблемной областью является карусель внизу страницы. Я убегаю от jquery-1.7.1.min.js,

Я предполагаю, что мой главный вопрос заключается в том, что может препятствовать срабатыванию этой функции, даже если кажется, что событие завершено?

1 ответ

Решение

Следите за своим синтаксисом.

http://jsfiddle.net/n1ck/HBCn5/

$("#scrollLeft").click(function() {
    $("#scrollContent").animate({
        'margin-left': '-714px', // don't close out the parameters with parentheses yet ...
        queue: false,            // continue adding the queue option (if needed)
        duration: 500            // and the duration option (if needed) and close after
    }, function() {
        alert("finishedLeft");
    });
});
$("#scrollRight").click(function() {
    $("#scrollContent").animate({
        'margin-left': '-1190px', // same as above
        queue: false,
        duration: 500
    }, function() {
        alert("finishedRight");
    });
});​    ​
Другие вопросы по тегам