在这段代码中,触发器会调用 topbar.resize 还是只是简单地运行其中包含的函数?我假设两者之间存在上下文差异,或者它是如何工作的?
jQuery.bind("hideBackstage", topbar.resize);
编辑:我如何让它只是简单地调用topbar.resize?
在这段代码中,触发器会调用 topbar.resize 还是只是简单地运行其中包含的函数?我假设两者之间存在上下文差异,或者它是如何工作的?
jQuery.bind("hideBackstage", topbar.resize);
编辑:我如何让它只是简单地调用topbar.resize?
调用将相当于
topbar.resize.call(touchedElement, jqueryWrappedEvent);
也就是说,“包含”的函数topbar.resize
将使用接收者(this
)调用已接收事件的元素,并使用参数调用事件(包装为 jquery 事件)。
这不同于
topbar.resize()
因为
this
) 不会topbar
编辑后编辑:
如果您只想调用等效于topbar.resize()
,只需执行以下操作:
jQuery.bind("hideBackstage", function(){topbar.resize()});
您可以使用 jQuery 代理或
jQuery.bind("hideBackstage", function(){
topbar.resize.apply(topbar, arguments); // seting context as topbar for resize.
});
您可以使用$.proxy()
(有趣的是类似于Function.prototype.bind()
)。
jQuery.bind("hideBackstage", $.proxy(topbar.resize, topbar));
但是,您将无权访问该event
对象。