我无法弄清楚为什么我会收到错误:
错误:TypeError:$ .showMessage不是函数
文件1:
(function($) {
$.fn.showMessage = function(message, type, delay) {
var $messages = $("#messages");
type = (typeof type == 'undefined') ? 'info' : type;
delay = (typeof delay == 'undefined') ? 0 : delay;
var message_html = '<div class="messages"><ul>' +
'<li class="'+ type +'">' +
'<p>' + message + '</p><a href="#" class="close"></a>' +
'</li></ul></div>';
if($messages.length){
$messages.html(message_html).hide().delay(delay).fadeIn("fast");
} else {
$("#main h1").before(message_html).hide().delay(delay).fadeIn("fast");
}
return this;
};
})(jQuery);
文件2:
(function($) {
$.showMessage('test','success');
})(jQuery);
注意:如果我有each()并使用选择器$("#messages").showMessage('test','success');
,它可以正常工作。我在某处读到你总是需要返回this
但是如果没有每个()
以下版本工作正常,但我真的需要每个版本并传递选择器吗?
$.fn.showMessage = function(message, type, delay) {
return this.each(function() {
var $this = $(this);
type = (typeof type == 'undefined') ? 'info' : type;
delay = (typeof delay == 'undefined') ? 0 : delay;
var message_html = '<div class="messages"><ul>' +
'<li class="'+ type +'">' +
'<p>' + message + '</p><a href="#" class="close"></a>' +
'</li></ul></div>';
if($this.length){
$this.html(message_html).hide().delay(delay).fadeIn("fast");
} else {
$("#main h1").before(message_html).hide().delay(delay).fadeIn("fast");
}
});
};
答案 0 :(得分:2)
当您使用构造$.fn.showMessage
时,您声明了一个名为showMessage
的jQuery插件,它将作用于给定的context,例如$("#main").showMessage
。要声明一个可以用 static 方式调用的插件,也就是一个帮助方法,你需要声明它的在外面 {1}}命名空间:
$.fn