2010-10-02 45 views
0

我想通過jQuery使用.load函數加載HTML。這是按預期工作,但我想在之後處理加載的HTML。這隻適用於我jquery加載html只能使用時間延遲設置

a)在完成所述操作之前設置斷點。

b)在所述操作完成之前設置警報。

當然,我希望這個工作,而不必設置斷點或警報。

下面是不工作的代碼。值得注意的是,最後一點.html('合同')僅在設置斷點/警報時起作用。我很可能做了一些非常錯誤的事情,因爲我對JQuery不太熟練。

function openImageDiv(element) { 
    $(element).children('fieldset').removeClass('hidden'); 
    $(element).children('img').addClass('editable').bind('click', function() { 
     chooseImage(this); 
    }).removeClass("small"); 

    $(element).children('.expand').unbind('click').bind('click', function() { 
     closeImageDiv($(this).parent()); 
    }).html("Contract"); 
} 

下面是從服務器加載HTML的代碼。

function addImage(container) { 
    var x = $(container).append('<div class="new">'); 
    var y = $(container).children('.new'); 
    var z = $(y).load('/antiquestore/image/editimageincontext'); 
    openImageDiv($(z)); // Setting breakpoint or alert before this line makes the change take place. 
    $(z).removeClass('new'); 
    $(z).addClass('image'); 
} 

任何想法我做錯了什麼?

回答

2

默認情況下,jQuery .load函數是異步的,因此在調用之後的代碼可能在加載實際完成之前運行。在加載調用的成功函數中定義的函數內調用後續代碼。

提示如下:

var z = $(y).load('/antiquestore/image/editimageincontext', function() { 
    openImageDiv($(z)); 
    $(z).removeClass('new'); 
    $(z).addClass('image'); 
});