选项未从之前的调用jQuery中清除

时间:2011-12-26 17:36:38

标签: javascript jquery variables options

我已经制作了这个小插件来显示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;
        }

问题是:第一次它工作得很好,但是当我再次在同一页面中调用时,这些值是从之前的调用中设置的。

任何想法如何使其发挥作用?

1 个答案:

答案 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}}属性选择其他名称。