Как проверить, что переключатели уже связаны с обработчиком события «изменение» - PullRequest
1 голос
/ 07 сентября 2011

Если у меня есть переключатели:

<input id="y0" type="radio" name="myRadioBtns" value="a" checked> <label for="y0"></label>
<input id="y1" type="radio" name="myRadioBtns" value="b">  <label for="y1"></label>
<input id="y2" type="radio" name="myRadioBtns" value="c">  <label for="y2"></label>

Радиокнопки, возможно, уже связали обработчик события изменения, например:

$('input[name='myRadioBtns']').change(function() {
  //EVENT HANDLER
});

Мне нужно проверить, были ли переключатели уже связаны с обработчиком события «изменение» или нет.

У меня вопрос Как проверить, были ли переключатели уже связаны с обработчиком события «изменение» ?

Ответы [ 3 ]

2 голосов
/ 07 сентября 2011

Если вы хотите проверить, было ли уже связано событие изменения, прежде чем связывать другое, используйте это:

var $el = $('input[name='myRadioBtns']');

if( ! ($el.data('events') && $el.data('events').change) ) {

   $el.change(function() {
       //EVENT HANDLER
   });
}
2 голосов
/ 07 сентября 2011

Вы можете получить связанные события с:

.data('events')
0 голосов
/ 10 февраля 2012

Кроме того, вы можете связать несколько событий изменения пространства имен, каждое из которых выполняет разные действия. Например, если вы писали плагин jQuery, который должен привязывать события к элементам, но не удалять существующие события, которые могут быть уже установлены на странице.

Всякий раз, когда я пишу плагин jQuery, я проверяю, что все события связаны следующим образом:

    $(":checkbox").on("change.myNamespace", function(){
        //Do Stuff - this won't replace existing change events on checkboxes!
    });
...