我不确定这个问题是否已被提出,但我已经成为榜样,所以我希望我的问题可能有用。这里我有jQuery的自定义插件:
(function($){
jQuery.alertSay = function(options){
var options = $.extend({say:'open'}, options};
alert('We are currently ' + say + '!');
};
})(jQuery);
连接到主index.html:
$(document).ready(function() {
$.alertSay({
say: 'on vacations'
});
});
由于选项不起作用,因为如果我使用没有任何选项的简单方法,例如:
(function($){
jQuery.alertSay = function(){
alert('We are currently on vacations!');
};
})(jQuery);
通过以下链接可以正常工作:
$(document).ready(function() {
$.alertSay();
});
由于我对jQuery的了解不足,我无法察觉我的错误在哪里,如果可能的话,帮助我真是太好了。谢谢!
UPD: 感谢您的回复,但遗憾的是替换
alert('We are currently ' + say + '!');
与
alert('We are currently ' + options.say + '!');
什么都不做,根本没有警报。但我有一些错误:
Uncaught SyntaxError: Unexpected token } hallo.js:3
Uncaught TypeError: Object function (a,b){return new p.fn.init(a,b,c)} has no method 'alertSay' (in the html on string $.alertSay({)
答案 0 :(得分:2)
问题在于:
alert('We are currently ' + say + '!');
// -------------------------^
你想要
alert('We are currently ' + options.say + '!');
第一个是寻找名为say
的变量。第二个是在say
对象上查找属性options
。
您还有一个}
,您的意思是)
:
var options = $.extend({say:'open'}, options};
// -----------------------------------------^
应该是
var options = $.extend({say:'open'}, options);
通过这两项修正,it runs fine(source)。
答案 1 :(得分:2)
在您的第一段代码中,将say
替换为options.say
(function($){
jQuery.alertSay = function(options){
var options = $.extend({say:'open'}, options); // some error here
alert('We are currently ' + options.say + '!');
};
})(jQuery);
jsfiddle:DEMO