JQuery Cluetip («уничтожить») не уничтожить / удалить Cluetip? - PullRequest
3 голосов
/ 23 декабря 2009

Я пытаюсь понять, как на самом деле работает cluetip. У меня есть фиктивная структура DOM, на которую я сделал несколько предупреждений, чтобы проверить, был ли удален cluetip после того, как cluetip ('destroy') был вызван для элемента привязки. Тем не менее, div cluetip все еще кажется живым и здоровым. Это действительно смущает меня ...

Поправьте меня, если я ошибаюсь ... AFAIK, cluetip имеет 1 экземпляр на веб-странице и существует в иерархии тегов, то есть cluetip> cluetip-outer> cluetip-inner. Он добавляется где-то в структуру DOM, когда он впервые добавляется к элементу html (в моем случае якорь).

Таким образом, вопрос: вызовет ли cluetip ('destroy') для элемента html фактическое удаление cluetip, или он удалит / сбросит какую-то переменную в cluetip (и если да, то какая переменная)? Или я совершенно не в курсе?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 23 декабря 2009

Попробуйте следующее:

$(this).cluetip('destroy'); 
$(this).remove(); 

Функция remove () также должна отсоединять события.

3 голосов
/ 23 декабря 2009

Похоже, все, что делает функция уничтожения, это удаляют триггер события (строки 28-30)

if (js == 'destroy') {
  return this.unbind('.cluetip');
}

Если вы хотите убедиться, что данные в подсказке пропали, очистите их самостоятельно:

$('#cluetip-inner').empty();

Обновление: чтобы ответить на ваш вопрос о том, имеет ли элемент что-либо связанное с ним, я отсылаю вас к тому, что я нашел с сайта Джеймса Падолси :

// List bound events:
console.dir( jQuery('#elem').data('events') );

// Log ALL handlers for ALL events:
jQuery.each($('#elem').data('events'), function(i, event){
    jQuery.each(event, function(i, handler){
        console.log( handler.toString() );
    });
});

* Примечание: console относится к консоли Firebug.

...