Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.05.2016, 21:08
Интересующийся
Отправить личное сообщение для RioEiner Посмотреть профиль Найти все сообщения от RioEiner
 
Регистрация: 06.10.2015
Сообщений: 10

Как проверить наличие обработчика события на элементе?
В общем такая задача:

var $body=$("body");
$body.on("keydown",move); // установил обработчик.

// потом бла-бла-бла в коде где может выключиться обработчик через $body.off(...)

Вопрос: Как проверить наличие обработчика в $body?

Благодарствую)
Ответить с цитированием
  #2 (permalink)  
Старый 26.05.2016, 22:40
Кандидат Javascript-наук
Отправить личное сообщение для yazonnile Посмотреть профиль Найти все сообщения от yazonnile
 
Регистрация: 25.05.2012
Сообщений: 133

гугл
http://stackoverflow.com/questions/1...sts-on-element
Ответить с цитированием
  #3 (permalink)  
Старый 26.05.2016, 23:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

yazonnile,
спасибо!!!
Ответить с цитированием
  #4 (permalink)  
Старый 26.05.2016, 23:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Функция проверки наличия обработчика события на элементе
RioEiner,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css"></style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

  <script>
$(function() {
    var $body = $("body");
    $body.on("keydown", move);
    function move() {
        alert("test")
    }

    function test(elem, event, fun)
    {
     var events = $._data(elem, "events");
     return !!events && !!(events = events[event]) && (!fun || events.some(function(data) {
        return data.handler == fun
    }))
    }
    alert(test($body[0],"click"));//false кликов нет
    alert(test($body[0],"keydown"));//true есть  keydown
    alert(test($body[0],"keydown", move)); //true есть  keydown и в  keydown есть функция move
    alert(test($body[0],"keydown", test)); //false есть  keydown но в  keydown нет функция test
    $body.off();
    alert(test($body[0],"keydown", move));//false нет  keydown или в  keydown нет функция move
    $body.on("keydown", move);
    alert(test($body[0],"keydown", move)); //true есть  keydown и в  keydown есть функция move
});
  </script>
</head>

<body>


</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не понимаю JavaScript. Как сделать ожидание события загрузки данных? xintrea AJAX и COMET 7 01.06.2013 17:18
Как проверить на этом-ли хостинге стоит сайт из определнного домена? Gamestop Серверные языки и технологии 3 05.11.2012 06:51
Как быстро проверить есть ли в массиве нужная строка? Почемучкин Общие вопросы Javascript 15 17.08.2012 20:19
Как проверить существование функции Aderba Общие вопросы Javascript 2 14.11.2008 16:09
как проверить поддеружет браузер определенное событие? GOll Элементы интерфейса 9 24.07.2008 14:40