我已经制作了这个小插件来显示Twitter风格警报:
jQuery.fn.myAlert = function (options) {
var defaults = {
message: false,
class: 'normal',
timer: 500,
delay: 3000,
};
var options = $.extend(defaults, options);
if (!options.message || options.message == '') {
return false;
}
$('body').append('<div id="alert_notification" class="'+options.class+'"><div id="alert_message">' + options.message + '</div></div>')
$('#alert_notification').slideToggle(options.timer).delay(options.delay).slideToggle(options.timer);
return;
}
问题是:第一次它工作得很好,但是当我再次在同一页面中调用时,这些值是从之前的调用中设置的。
任何想法如何使其发挥作用?
答案 0 :(得分:2)
我的猜测是slideToggle()
没有显示您打算显示的<div>
,因为jQuery没有附加没有唯一ID的新<div>
。在添加新的<div>
之前,您应该从页面中删除最初添加的$('#alert_notification').remove();
$('body').append(...);
。或者,让jQuery替换现有的。
class
此外,defaults
是JavaScript中的保留字。我会将您的var defaults = {
message: false,
'class': 'normal',
timer: 500,
delay: 3000,
};
更改为:
options['class']
然后使用options.class
代替class
访问它,或为{{1}}属性选择其他名称。