2013-02-15 75 views
1

我需要通過jquery向DOM添加一些html,並綁定一些事件生成的元素,但我無法同步它,其中addEvents函數啓動時,DOM元素是沒有創建,因此$(「。login-log」)元素不在DOM上。如何使用jquery綁定事件同步jquery加載文件

我發現這一點:

Javascript Event Synchronization

進出口工作就可以了,但不工作對我來說,我的代碼,我不知道如果我錯過了什麼或什麼:

var Login = function() 
{ 
var commons = new Commons(); 

this.init = function() 
{ 
    stepOne(stepTwo); 

    commons.init(); 
} 

function stepOne(callback) { 
    var AsyncDone = function() 
    { 
     callback(); 
    } 
    loadFiles(AsyncDone); 
} 

function loadFiles(callback) 
{ 
    $(".header-container").load("views/header.html"); 
    $(".content-container").load("views/login.html"); 
    callback(); 
} 

function stepTwo() { 
    addEvents(); 
} 

function addEvents() { 
    alert("is here"); 
    $(".login-log").bind("click", function() { alert("fuck"); }); 
} 
} 

的syncronizathion使警報「在這裏」在header和login.html的DOM元素加載到DOM之前出現。

我知道必須很簡單,但我沒有找到解決方案。

感謝您的建議。

+0

什麼不起作用?你需要改進這個問題來提出一個具體的問題,請參閱http://stackoverflow.com/faq – Liam 2013-02-15 09:17:05

+0

我需要通過jQuery向DOM添加一些html,並將一些事件綁定到我生成的元素,但是我不能同步它,在addEvents函數啓動的地方,DOM元素不會被創建,所以$(「。login-log」)元素不在DOM中。 – ruudy 2013-02-15 09:29:43

+0

我認爲這裏很明顯:「syncronizathion使alert」在這裏「出現在DOM和DOM中的DOM和DOM元素加載之前。不要投反對票,並嘗試在... – ruudy 2013-02-15 09:31:36

回答

1

我的最終選擇:

this.init = function() 
{ 
    loadHeader(addHeaderEvents); 
    loadTemplate(addTemplateEvents); 
    loadFooter(addFooterEvents); 

    commons.init(); 

} 

function loadHeader(callback) { 
    $(".header-container").load("views/header.html", function() { 
     callback(); 
    }); 
} 
function addHeaderEvents() { 

} 

function loadTemplate(callback) { 
    $(".content-container").load("views/template_login.html", function() { 
     callback(); 
    }); 
} 
function addTemplateEvents() { 
    alert("llega"); 
    $(".login-log").bind("click", function() { alert("done"); }); 
} 

function loadFooter(callback) { 
    $(".footer-container").load("views/footer.html", function() { 
     callback(); 
    }); 
} 
function addFooterEvents() { 

}