2013-08-15 9 views
0

В моем html-файле я загружаю два внешних файла javascript, которые выполняют некоторые манипуляции с dom, первый просто подготавливает страницу (вводя некоторые div и содержимое) в html. А второй обнаруживает те divs, которые были просто введены, а затем попытаться сделать с ним некоторые вещи.Порядок загрузки JavaScript и анонимная функция

var app = { 
    init: function() { 
     // event handler goes here 
     app.alertMe('Hello'); 
     app.loadContent(); 
     app.insertDiv(); 
    }, 
    loadContent: function() { 
     $('#div1').load('../html/demo_test.html'); 
    }, 
    insertDiv: function() { 
     $('#div2').append('<strong>YEEEEEEAP</strong>'); 
    }, 
    alertMe: function(a) { 
     alert(a); 
    } 

}; 

$(function() { 
    app.init(); 
}) 

Второй является this начальной загрузки библиотеки. Мой HTML-файл выглядит следующим образом

<html> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
     <title>A</title> 
      <script type="text/javascript" src="page_prep.js"> 
    </script> 
    </head> 
    <body> 
     body 
    </body> 
    <script type="text/javascript" src="bootstap_lib.js"> 
</html> 

Хотя у меня есть порядок загрузки в правильном порядке, кажется, библиотека, чтобы нагружать перед моим custom.js это в конечном итоге вызывает действия, чтобы не работать, потому что дивы, что нужно быть настоящего не найдено. Тщательная отладка доказала, что дивы были введены впоследствии.

Любая причина, почему это может быть так?

ответ

1

Вы откладываете инъекцию до завершения загрузки страницы, когда скрипт начальной загрузки запускается, как только браузер загружает его.

Переместить файл сценария чуть выше YOUT начальной загрузки сценария, и изменить это:

$(function() { //This defers execution 
    app.init(); 
}) 

к этому:

app.init(); //This executes immediately 
Смежные вопросы