【问题标题】:Context when passing option to plugin将选项传递给插件时的上下文
【发布时间】:2012-11-19 05:38:14
【问题描述】:

我在将对象的上下文作为选项传递给插件时遇到了一些问题。我调用该函数,但是当插件执行此操作时,“附加”的上下文会发生变化。

$(document).ready(function() {  
    $('article > header').stickyHeader({
       attach: $(this).siblings('h2')
    });
});

$.fn.stickyHeader = function(settings) {
  // settings
  settings = $.extend({
    attach: false
  }, settings);

  var $this = $(this);
  var $attach = settings.attach;
  console.log($attach);

  // DO STUFF

  return false;
};

控制台记录“jQuery()”,我认为上下文是文档。如何从插件中获取正确的上下文?理想情况下是“jQuery(h2)”。

在四处挖掘之后,我摆弄了以下内容,但没有结果:

var $attach = $.proxy( $attach, this );

有什么想法吗? http://jsfiddle.net/mfpYK/

【问题讨论】:

    标签: jquery jquery-plugins plugins


    【解决方案1】:

    以下对我有用。

    $(document).ready(function() {  
        $('article > header').stickyHeader({
            attach: $('article > header').siblings('h2')
        });
    });
    

    $(this) 在您的原始代码中显然是 $(document)

    【讨论】:

    • 是的,你是对的,它就像一个魅力。 然而附加选项实际上会将另一个对象“附加”到标头对象,因此在您的示例中,只有最后一个 h2 被附加。这就是为什么我包含 $(this) 很重要。
    • 我的代码在你的小提琴上运行时会给出一个包含两个 h2 dom 对象的数组。你到底想让console.log($attach); 输出什么?
    猜你喜欢
    • 2014-06-02
    • 2012-05-11
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 2014-08-24
    • 2020-03-28
    • 1970-01-01
    • 2020-06-25
    相关资源
    最近更新 更多