使用模块模式在jQuery回调中访问私有变量

时间:2012-12-01 18:43:50

标签: javascript jquery closures revealing-module-pattern

以下执行没有错误,但DOM未更新。

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();
});

更新

我实际上并没有在jQuery ready事件中调用Cart.init(),而是与上面的代码相反。

1 个答案:

答案 0 :(得分:3)

致电#cart时,请检查Cart.init()对象是否存在。这是我在你的两个工作代码和不工作代码之间看到的唯一区别,因为没有其他问题(参见fiddle)。