Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Снять обработчик события (https://javascript.ru/forum/css-html/48874-snyat-obrabotchik-sobytiya.html)

L0k1 20.07.2014 16:08

Снять обработчик события
 
Приветствую камрады!
Возник вопрос следующего характера: на группу элементов навешен обработчик - как снять обработчик с конкретного элемента?

например:
<div>
 <a>1</a>
 <a id='test'></a>
</div>

$('div').on('click','a', function(){
  // some code
})


Как в данном случае снять обработчик конкретно с #test

http://codepen.io/L0k1/pen/gzlrq

Vlasenko Fedor 20.07.2014 16:21

$('div').on('click','a:not("#off")', function(){
  alert('binded event');
  return false;
})

L0k1 20.07.2014 16:42

Эмм.. это решение немного с другого конца.
Вопрос не в том, как повесить обработчик на элементы за исключением какого-то, а как раз в снятии.

Есть плагин, который вешает эти обработчики, и мне не хотелось бы в плагин вносить айдишник, костыльно как-то.

Я просто не нагуглил ответ на этот вопрос, думал может комьюнити в курсе.

Без костылей никак?

Vlasenko Fedor 20.07.2014 16:52

<body>
  <div>
    <a>1</a>
    <a id='test'>test</a>
  </div>
  <script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
  <script>
    $("div").on("click", "a", function () {
      alert("Yes");
    });
    $("#test").on("click", function () {
      return false;
    });
  </script>
</body>

L0k1 20.07.2014 17:08

Спасибо!
такой вариант вполне хорош
а я зациклился именно на снятии события: unbind, off и все у меня не хотело работать (


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