2013-06-26 5 views
1
var x = $("<div ></div>"); 
$('body').append(x); 
x.load('page.html' 
    , function() { 
     $(document).ready(
      function(){ 
      //useful stuff here; 
      } 
     ); 
    }); 

Я ожидаю готовую функцию обратного вызова, которая будет выполнен после page.html полностью загружен и уже выполнили все эти скрипты внутри моего «DIV».
Этот пример работает.
Мой вопрос: Является ли это правильным способом делать то, что я ожидаю? Есть ли другой путь? Какова логика готового события в этом случае? Должен ли он применяться к «документу», «этому» или «х»?JQuery выполнение готового события после загрузки новой страницы

+2

Почему? 'x.load ('page.html', function() {// dostuff});' есть какие-то проблемы? – PSL

+0

отлично работает, когда вы намереваетесь выполнить скрипт после выполнения готовности на ready() на странице.html – jrey

ответ

1

dummy.html

<SCRIPT> 
    $(document).ready(
     function(){ 
      var x = $("<div >hola</div>"); 
      $('body').append(x); 
      x.load('dummy2.html', function() { 

       console.log('dummy callback'); 

       $(document).ready(
        function(){ 
        console.log('dummy has loaded after dummy2 has loaded'); 
        //useful stuff here; 
        } 
       ); 
      }); 
     } 
    ); 
</SCRIPT> 

dummy2.html

<SCRIPT> 
    $(document).ready(
     function(){ 
      console.log('dummy 2a has load'); 
     } 
    ); 
    $(document).ready(
     function(){ 
      console.log('dummy 2b has load'); 
     } 
    ); 


</SCRIPT> 

Этот пример показывает, как работает последовательность , сначала напечатайте фиктивный обратный вызов ', второй: макет 2а и макет 2b, а также последний отпечаток «dumy загружен после загрузки фиктивного файла», я знаю, почему работает нормально, но последовательность работает нормально.

Update

если вы удалите строки $ (документ) .ready последовательность является

первый: фиктивный обратный вызов второй: манекен загружается .../Неправильно!/

2

Вы событие нагрузки должны быть помещены в DOM готовы ..

$(document).ready(function() { 
    var x = $("<div ></div>"); 
    $('body').append(x); 
    x.load('page.html', function() { 

     //useful stuff here; 
    }); 
}); 

Нет необходимости обратного вызова, чтобы быть заключен в DOM ready обработчиком ..

Он работает в этом случае, как вы не кажется для выбора любого уже существующего элемента на странице. Так что это будет работать нормально событие без DOM ready обработчика

+0

+1 Я думаю, что это правильный путь ... – PSL

+0

если вы хотите выполнить скрипт перед сценарием jquery на странице.html работает нормально, но если вы хотите выполнить после того, как jquery script $ (document) ready (...) of page.html вы, например, ничего не работают нормально. – jrey

+1

@Sushanth Мой «полезный материал» должен быть выполнен после завершения всех скриптов в файле page.html. Когда используется обратный вызов нагрузки, как и в вашем примере, он запускается перед скриптами в page.html. Я этого не ожидал. – franbenz