2012-12-01 38 views
1

以下執行沒有錯誤,但DOM未更新。使用模塊模式訪問jQuery回調中的私有變量

var Cart = function() { 
    var $cart; 

    function init() { 
    $cart = $("#cart"); 

    this.refresh(); 
    } 

    function refresh() { 
    $.ajax({ 
     // ... 
     success: function(html) { 
     $cart.html(html); // $cart seems to exist as JS object, but #cart doesn't get updated in the DOM. 
     $("#cart").html(html); // This works! 
     } 
    }); 
    } 

    return { 
    init: init, 
    refresh: refresh 
    } 
}(); 

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

更新

我實際上並沒有調用Cart.init()反對什麼上面的代碼表示,jQuery的ready事件裏面。

+0

你記錄收到的html來檢查它嗎? –

+0

@dystroy:我這樣做,爲了簡潔起見,跳過了。加點更清楚。 – randomguy

+0

這應該工作,這裏沒有範圍問題。 –

回答

3

檢查您的#cart物體存在,當您撥打Cart.init()。這是我在你的兩個工作代碼和不工作代碼之間唯一的區別,因爲沒有其他問題(請參閱fiddle)。

+0

問題在於我在ready回調之外調用Cart.init()!謝謝,這幫助了我。 – randomguy

+3

@randomguy:有了這樣的事情,最好引用你的**實際**代碼。在這種情況下,您已將'init'的調用顯示爲處於'ready'回調中,但基於上面的註釋,事實並非如此。 –

+1

@ T.J.Crowder:採取的要點。將來會這樣做。 – randomguy

相關問題