我不明白为什么我会犯这个错误:
错误: 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);注意:如果我有一个a()并使用选择器$("#messages").showMessage('test','success');,它就可以正常工作。我在某个地方读到,您总是需要返回this,但不知道如何在没有each()的情况下做到这一点。
下面的版本很好,虽然我真的需要每个并传递一个选择器吗?
$.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");
}
});
};发布于 2012-09-22 12:56:16
使用构造$.fn.showMessage时,您将声明一个名为showMessage的jQuery插件,该插件将作用于给定的上下文,例如$("#main").showMessage。要声明可以以静态方式调用的插件,即助手方法,您需要在$.fn命名空间之外声明它:
(function($) {
$.showMessage = function(message, type, delay) {
// ...
}
})(jQuery);https://stackoverflow.com/questions/12543847
复制相似问题