我已经创建了一些功能正常的工作代码:
$('#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()测试它们也没有快乐)
答案 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插件,虽然根据你的第一个例子,它似乎是一个构造函数。