Почему этот обратный вызов не разрешается должным образом в jQuery? - PullRequest
0 голосов
/ 07 декабря 2009

У меня есть этот код:

    $(document).ready(function(){
        $(".links a").click(function(e){
            var toLoad = "products.html #" + this.id;
            $('#block').fadeTo('fast',0,loadContent);

            function loadContent() {  
                    $('#block').load(toLoad,'',showNewContent())  
                }  
            function showNewContent() {  
                    $('#block').fadeTo('slow',100);  
                }
            e.preventDefault();
        });

    });

Идея такова:

  • нажмите на ссылку для запуска (проверьте!)
  • блок "block" исчезает до 0 (проверьте!)
  • содержимое отключено (проверьте!)
  • div "block" исчезает обратно 100 (упс!)

Поведение, которое я вижу, состоит в том, что div исчезает, а затем возвращается с новым содержимым, как только fadeOut завершается.

Есть мысли по этому поводу?

1 Ответ

2 голосов
/ 07 декабря 2009

Изменить это:

function loadContent() {
  $('#block').load(toLoad,'',showNewContent())  
} 

до

function loadContent() {
  $('#block').load(toLoad,'',showNewContent)  
} 

Для объяснения: вы немедленно вызываете функцию (и передаете ее несуществующий возврат как load()), тогда как вы хотите передать функцию (а не возвращается) как обратный вызов.

Примечание: также, fadeTo() состояния:

Непрозрачность для исчезновения (число от От 0 до 1).

так что вы, вероятно, должны изменить:

function showNewContent() {  
  $('#block').fadeTo('slow',100);  
}

до

function showNewContent() {  
  $('#block').fadeTo('slow', 1);  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...