Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.12.2015, 22:45
Аватар для Алексей Петрович
Аспирант
Отправить личное сообщение для Алексей Петрович Посмотреть профиль Найти все сообщения от Алексей Петрович
 
Регистрация: 29.11.2015
Сообщений: 83

destroy, unstroy
Можете подсказать, как реализуются данные методы JQuery плагинов. Как лучше делать.

Пытался реализовать несколько раз, но понимания как это делать не приходит и из-за этого возникают проблемы.
Ответить с цитированием
  #2 (permalink)  
Старый 03.12.2015, 23:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Алексей Петрович,
destroy -- метод удаления плагина, удаляются элементы созданные плагином и обработчики, что удалить с помощью .remove() или off() перечислить самому

Последний раз редактировалось рони, 03.12.2015 в 23:07.
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2015, 23:23
Аватар для Алексей Петрович
Аспирант
Отправить личное сообщение для Алексей Петрович Посмотреть профиль Найти все сообщения от Алексей Петрович
 
Регистрация: 29.11.2015
Сообщений: 83

Что делает off()?

А если отключать обработчик событий, к примеру on('click') ну или другой, а пользовательские обработчики не отлучаться? И как этого можно избежать?
Ответить с цитированием
  #4 (permalink)  
Старый 03.12.2015, 23:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от Алексей Петрович
Что делает off()?
Off
Ответить с цитированием
  #5 (permalink)  
Старый 03.12.2015, 23:37
Аватар для Алексей Петрович
Аспирант
Отправить личное сообщение для Алексей Петрович Посмотреть профиль Найти все сообщения от Алексей Петрович
 
Регистрация: 29.11.2015
Сообщений: 83

$('#foo').off('click'); // удалим все обработчики события 'click' у элемента foo
Цитата из переведённой статьи.

Как этого избежать? Будет ли правильным такой подход?
var $element = $('#element');

// Где то в коде
$element.on('click', function () {
    $(this).trigger('myplugin.click');
});
$element.on('myplugin.click', function() {
    // Что то
});

// В методе destoy
$element.off('myplugin.click');
Ответить с цитированием
  #6 (permalink)  
Старый 03.12.2015, 23:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Алексей Петрович,
а что функции имя сложнее дать?
var $element = $('#element');


function x() {
   //
}

$element.on('click', x);
$element.off({'click' : x});

Последний раз редактировалось рони, 04.12.2015 в 00:34.
Ответить с цитированием
  #7 (permalink)  
Старый 03.12.2015, 23:48
Аватар для Алексей Петрович
Аспирант
Отправить личное сообщение для Алексей Петрович Посмотреть профиль Найти все сообщения от Алексей Петрович
 
Регистрация: 29.11.2015
Сообщений: 83

Блин, даже не думал об этом, не догадывался и не разу так не делал. Надо попробовать.
Ответить с цитированием
  #8 (permalink)  
Старый 04.12.2015, 00:15
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

рони, разве x будет доступна из вне?
Ответить с цитированием
  #9 (permalink)  
Старый 04.12.2015, 00:20
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Алексей Петрович, такая конструкция здесь лишняя
$element.on('click', function () {
    $(this).trigger('myplugin.click');
});

Пространство имен пишится так
var $element = $('#element');
$element.on('click.myplugin', function() {
    // Что то
});
$element.off('click.myplugin');

Последний раз редактировалось Rise, 04.12.2015 в 00:25.
Ответить с цитированием
  #10 (permalink)  
Старый 04.12.2015, 00:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от Rise
рони, разве x будет доступна из вне?
обеспечение видимости в руках создателя плагина - код выше условный но поправил.
как пример
Цитата:
.unbind("click", this._doClick);

Последний раз редактировалось рони, 04.12.2015 в 00:44.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с api destroy Koluchiy ExtJS 6 06.07.2015 16:38
Зачем нужна session_ destroy() ? jsuse Серверные языки и технологии 2 03.03.2012 08:19
jstree destroy cedage Элементы интерфейса 0 16.12.2010 21:23