我正在编写一个 jQuery 插件,它涉及将事件绑定(bind)到 window.scroll。 window.scroll 中执行的操作取决于调用原始初始化时传入的设置。
如何在绑定(bind)事件内访问数据元素或此元素?
(function($) {
var methods = {
init : function(options) {
return this.each(function() {
$(window).bind("scroll.myPlugin", methods.windowOnScroll);
});
},
windowOnScroll : function() {
var $this = $(this);
var data = $this.data("scrollingLoader");
if (data.something) {
// ...
}
}
})(jQuery);
最佳答案
jQuery 提供了一个方便的函数 $.proxy
,它可以进行跨浏览器函数绑定(bind)。
(function($) {
var methods = {
init : function(options) {
return this.each(function() {
$(window).bind("scroll.myPlugin", $.proxy(methods.windowOnScroll,methods));
});
},
windowOnScroll : function() {
var $this = $(this);
var data = $this.data("scrollingLoader");
if (data.something) {
// ...
}
}
})(jQuery);
$.proxy 函数返回一个函数,该函数将始终在第二个参数的上下文中执行第一个参数中传递的函数。 http://api.jquery.com/jQuery.proxy
关于jquery - 在jquery插件事件中访问$this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7262662/