出于某种原因,下面的一些代码并没有像我预期的那样 - 可能是由于我最终对它应该如何表现的误解。
var contentPane = widget.children("div.content").first();
var success = function (content) {
return function (data, successCode, httpRequest) {
content.innerHTML = data;
};
}(contentPane);
我已经附加了我的调试器(好吧,无论如何都是Firebug),看起来content.innerHTML = data;
行上的'内容'是Window对象,当我应该是var contentPane = widget.children("div.content").first();
的结果时,对吗?
请注意,如果我在函数之前设置断点,那么contentPane确实设置为我期望的(jQuery对象匹配div.content
)。什么事情发生在这里,我错过了什么?
答案 0 :(得分:2)
这是他们在1.4 :)中添加$.proxy()
的内容,如下所示:
var contentPane = widget.children("div.content").first();
var success = $.proxy(function (data, successCode, httpRequest) {
this.innerHTML = data;
}, contentPane);
这只会使你的常见案例的闭包声明更短,$.proxy(function, whatThisIs)
。
对于“出了什么问题?”部分......什么都没有,你确定你正在检查正确的变量吗? this
在您的函数中引用window
,但content
是您想要的jQuery对象...您可以在此处看到快速测试:http://jsfiddle.net/vhcde/
答案 1 :(得分:1)
问题可能是您的选择器。在此页面上运行时,以下工作正常
var contentPane = $("#header")[0];
var success = (function (content) {
console.info(content);
return function (data, successCode, httpRequest) {
console.warn(content);
content.innerHTML = data;
};
})(contentPane);
success("ohai");
*我在函数定义周围添加了括号,以增加清晰度。