在JS对象实例中引用Ajax加载的元素

时间:2013-09-03 16:22:55

标签: javascript jquery ajax

如何引用JavaScript对象实例中尚不存在的元素?

var Dynamic = function(el) {

  this.$instance = $(el);
}

var dynamicInstance = new Dynamic('#dynamic');

由于#dynamic元素是通过Ajax加载的,因此在创建dynamicInstance时脚本看不到它,并且无法引用它。

如果它有助于解决问题,我也可以在对象内部引用该元素而不在创建它时将其传入 - 但仍然不清楚如何使对象知道该元素。

1 个答案:

答案 0 :(得分:1)

如果你想让事物解耦,你可以接受一个回调函数作为参数,并在加载新元素并将其附加到dom后调用它

function doAjaxCall(callback) {
    $.ajax({
         success : function(response) {
              //Logic to create the new element based on response
              callback();
         }  
    });
}

doAjaxCall(function() {
    var dynamic = new Dynamic('#dynamic');
});

通过这种方式,您可以保持所有内容解耦,同时避免由ajax调用创建的竞争条件。