Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jQuery off() и on() (https://javascript.ru/forum/jquery/58934-jquery-off-i.html)

ekkl-82 18.10.2015 18:07

jQuery off() и on()
 
Хочу немного разобраться с обработчиками событий
$(document).on('click','a', function(e) {
  console.log('Clicked....');
  e.prevenDefault();
}
Этот код блокирует все ссылки на странице. Дальше, если поместить:
$(document).off('click','a.enable')
По идее, это долно разблокировать ссылки с установленным классом enable
Но, похоже, этого не происходит.
1) Это нормальное поведение? Пробовал и с jQuery и с Zepto.
2) По документации можно узнать, что off() нужно вызывать с теми параметрами, что и on(). Тогда какой путь существует для разрешение подобной проблемы?
---
PS. Вообще стоит пользоваться Zepto? Тот же jQuery намного больше, это раз, во-вторых Zepto проще, поскольку имеет меньше неиспользуемых наворотов.

рони 18.10.2015 18:46

Цитата:

Сообщение от ekkl-82
По идее, это долно разблокировать ссылки с установленным классом enable

не должно, слежение за ссылками осталось прежним.
Цитата:

Сообщение от ekkl-82
prevenDefault

чего-то нехватает.
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
$(function() {
    $(document).on("click", "a", function(e) {
        e.preventDefault();
        alert("Clicked....")
    });
    $(document).off("click", "a");
    $(document).on("click", "a:not(.enable)", function(e) {
        e.preventDefault();
        alert("Clicked....")
    })
});


  </script>
</head>

<body>
 <a href="http://www.yandex.ru/" title="yandex" class="yandex">yandex</a>
 <a href="http://javascript.ru/forum/" title="forum" class="enable">forum</a>
</body>

</html>

laimas 18.10.2015 18:53

ekkl-82, используйте в таких случаях пространства имен.


Часовой пояс GMT +3, время: 03:15.