var callback = function(n,i) {
$.MyObject.addDiv(n, i);
alert("wtf");
}(name, index);
Вы вызываете обратный вызов здесь, поэтому он вызывается.
Попробуйте сделать это, я думаю, что имя и индекс должны существовать из-за закрытия.
function MyUberObject(data) {
...
this.add = function(name, index) {
var callback = function() {
$.MyObject.addDiv(name, index);
alert("wtf");
};
$("#outerWrapper").animate(
{
"width": "+=200px",
},
{
duration : "fast",
easing: "linear",
complete: callback
}
);
...
}
если нет, то вы можете добавить имя и индекс для externalwrapper:
function MyUberObject(data) {
...
this.add = function(name, index) {
var callback = function() {
$.MyObject.addDiv($(this).data("props").name, $(this).data("props").index);
alert("wtf");
};
$("#outerWrapper").data("props", {name : name, index : index};
$("#outerWrapper").animate(
{
"width": "+=200px",
},
{
duration : "fast",
easing: "linear",
complete: callback
}
);
...
}
или, может быть, даже проще ...
function MyUberObject(data) {
...
this.add = function(name, index) {
var callback = function(n, i) {
$.MyObject.addDiv(n, i);
alert("wtf");
};
$("#outerWrapper").animate(
{
"width": "+=200px",
},
{
duration : "fast",
easing: "linear",
complete: function(){callback(name, index);}
}
);
...
}