Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Записать event элемента перед его отключением


Автор: JAYBE 2.4.2013, 09:21
Добрый день.
Подключается внешний скрипт, который ставить click event listener на кнопку.

Мне необходимо выполнить скорй event, поэтому я делаю так:
Код

$(button).off().on("click", function() {/*тело функции*/})

Есть вероятность, что отключенную функцию потре,уется использовать вновь. Как сохранить её, чтобы потом вновь включить при необходимости?
Нашёл такое:
Код

$._data( button[0], "events" ).click[0].handler
, но есть ли иные возможности?

Автор: Aliance 2.4.2013, 10:36
В общем, http://stackoverflow.com/questions/516265/jquery-unbind-event-handlers-to-bind-them-again-later это самый адекватный способ. Только по идеи нижнее подчеркивание не нужно.

Автор: JAYBE 2.4.2013, 10:50
Без подчёркивания не работает. Вообщем такой код:
Код

$("body").on("click", function() {console.log(1)}).on("click", function() {console.log(2)});
$("body").off("click", $._data($("body")[0], "events").click[1].handler);

Автор: Aliance 2.4.2013, 14:07
Не работает, потому что нужно писать так:
Код
$("body").data("events")

а не так:
Код
$._data($("body")[0], "events")


конечно работает и ладно, но мне кажется _data это все же служебный метод.

При использовании кнопки код на данном форуме, выбирай правильный язык - устаю уже редактировать сообщения за тобой.

Автор: JAYBE 3.4.2013, 16:26
Код

$("body").on("click", function() {console.log(1)})
[
//<body data-autorun=​"main" class=​"p-main">​…​</body>​
]
$("body").data("events")
//undefined
$._data($("body")[0], "events")
//Object {click: Array[1]}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)