jquery - 在jquery插件事件中访问$this

标签 jquery jquery-plugins

我正在编写一个 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/

相关文章:

jquery - 有没有一种方法可以根据在内容中找到的 anchor 自动用内容填充导航栏?

javascript - jquery水流过管道效果

jquery - 从 jQuery 插件中调用函数

javascript - 在最后一张幻灯片上停止 jQuery 按钮动画

jquery - 网站在移动设备上没有响应,但在计算机上没有响应

javascript - 如何编写允许不可编辑文本框的 JavaScript 函数?

javascript - 如何在一个文件中使用多个 jQuery 插件

jquery - 向 jsTree 添加 jQuery 自定义图像工具提示

jquery - 动画完成后删除类

javascript - 居中的内联文本在淡入时重新定位