Javascript抽象/传递元素

时间:2014-01-03 13:11:22

标签: javascript

我已经创建了一些功能正常的工作代码:

$('#clipboard-copy-button-trackinglink').data('stZclip', new ZeroClipboard($('#clipboard-copy-button-trackinglink')));

但是,我想从中创建一个抽象:

$('#clipboard-copy-button-trackinglink').stZclip($('#clipboard-copy-button-trackinglink'));

抽象:

(function($){
    $.fn.extend({ 

        //pass the options variable to the function
        stZclip: function(options) {

           console.log('loading zclip' + options);

           return this.each(function() {
               console.log(this);
               $(this).data('stZclip', new ZeroClipboard(options));
           });
        }
    });

})(jQuery);

我对它的理解是$('#clipboard-copy-button-trackinglink')会创建并传递元素的jquery对象,然后应该在抽象中的options变量中传递而不做任何进一步的转变。但是,我不明白为什么第一次直接调用zclip方法有效但第二次调用不行(我知道我已经用两种不同的方式调用它们但是使用data()测试它们也没有快乐)

1 个答案:

答案 0 :(得分:0)

以下内容会给你相同的结果:

(function($){
    $.fn.extend({ 

        //pass the options variable to the function
        stZclip: function(options) {

           console.log('loading zclip' + options);

           return this.each(function() {
               console.log(this);
               $(this).data('stZclip', new ZeroClipboard(options));
           });
        }
    });

})(jQuery);

你试图将ZeroClipboard称为jQuery插件,虽然根据你的第一个例子,它似乎是一个构造函数。