Параметры не очищены от предыдущего вызова jQuery - PullRequest
0 голосов
/ 26 декабря 2011

Я сделал этот маленький плагин для отображения предупреждений в стиле 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 Ответ

2 голосов
/ 26 декабря 2011

Я предполагаю, что slideToggle() не показывает <div>, который вы намереваетесь показать, потому что jQuery не добавляет новые <div> с уникальными идентификаторами. Вам, вероятно, следует удалить первоначально добавленные <div> s со страницы, прежде чем добавлять новые. Или заставьте jQuery заменить существующие.

$('#alert_notification').remove();
$('body').append(...);

Кроме того, class является зарезервированным словом в JavaScript. Я бы изменил ваш defaults на:

var defaults = {
    message: false,
    'class': 'normal',
    timer: 500,
    delay: 3000,
};

А затем получите к нему доступ с помощью options['class'] вместо options.class или выберите другое имя для свойства class.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...