grumble.js, плагин jQuery (всплывающие окна Bubble): как сделать так, чтобы тело документа не загрязнялось несъемным мусором? - PullRequest
2 голосов
/ 31 октября 2011

Я хочу показать всплывающее окно при нажатии. Я хочу, чтобы многие были в пузыре. Поэтому я создал демо: здесь . Но этот плагин Bubble Generator , который я использую, имеет тенденцию хранить тонны мусора в DOM каждый раз, когда он показывает всплывающее окно. Ну так я пытался уничтожить мусор через

        $('.grumble-text').remove();
        $('.grumble').remove();
        $('.grumble-button').remove();

Но это как-то тормозит вообще = (Так как же изменить код плагина всплывающего окна grumble-bubble , чтобы он либо содержал DOM в чистоте, либо, по крайней мере, делал плагин независимым от мусора, который он создает?

Ответы [ 3 ]

5 голосов
/ 08 ноября 2011

Я недавно обновил плагин, чтобы обеспечить лучший контроль позиционирования и угла. Обновление также сохраняет ворчание, вызывая плагин более одного раза для элемента, не создавая лишних оставшихся через DOM.

Попробуйте обновить до последней версии кода. Код ниже должен теперь работать так, как вы ожидаете.

var html = ''
    +'<a href="#me" target="_blank">Download me</a>'
    +'<br/>'
    +'<a href="#edit">Edit me</a>'
    +'<br/>'
    +'<a href="#delete">Delete me</a>';

var $grumble = $('#grumble3');

$grumble.mouseup(function(eventObj) {
    $grumble.grumble({
        text: html ,
        angle: (Math.random() * 360 + 150),
        distance: 30,
        hideOnClick: true,
        onShow: function() {
            $grumble.addClass("hilight");
        },
        onBeginHide: function() {
            $grumble.removeClass("hilight");
        }
    });
}).mousedown(function() {
    $grumble.addClass("hilight");
});

Спасибо за ваш интерес. Если есть какие-либо проблемы, пожалуйста, сообщите о них как об ошибках на странице github. https://github.com/jamescryer/grumble.js

2 голосов
/ 07 ноября 2011

Используйте параметры grumble и button для обратного вызова onHide следующим образом:

$('#grumble').grumble({
    text: 'Whoaaa, this is a lot of text that i couldn\'t predict',
    angle: 85,
    distance: 50,
    showAfter: 4000,
    hideAfter: 2000,
    onHide: function(grumble, button) {
        grumble.bubble.remove();
        grumble.text.remove();
        button && button.remove();
    }
});

Это позволяет вам удалить только «мусор» (я предпочитаю «остатки»), связанный с этой конкретной подсказкой / popup / bubble. Обратите внимание, что button существует, только если hasHideButton равно true, следовательно, button && проверка существования.

0 голосов
/ 31 октября 2011

Почему вы хотите удалить его?Вызывает ли «мусор» проблемы с производительностью браузера?

В общем, единственный способ сделать это - покопаться в источнике плагина и добавить функцию удаления плагина, если он еще не установлен.Если вы просто удалите связанные элементы DOM, вы оставите после себя ссылки на них и обработчики событий, которые обращаются к ним.

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