Объект jQuery отключил прослушиватель событий, как определить, когда изменяется атрибут html - PullRequest
2 голосов
/ 11 декабря 2011

Мне нужно сделать прослушиватель событий для тега select. Он должен запускаться каждый раз, когда элемент становится disabled или enabled.

Возможно ли это вообще?

P.S .: onchange не обнаруживает отключение.

Ответы [ 2 ]

8 голосов
/ 31 октября 2014

JQuery 1.6 +

Вы можете изменить jQuery prophooks:

jQuery.propHooks.disabled = {
  set: function (el, value) {
    if (el.disabled !== value) {
      el.disabled = value;
      value && $(el).trigger('disabledSet');
      !value && $(el).trigger('enabledSet');
    }
  }
};

Это вызовет «disabledSet», если элемент отключен через:

$(element).prop('disabled', true);

и вызовет «enabledSet», если элемент активирован через:

$(element).prop('disabled', false);

Тогда вы можете просто прослушать ваше событие так:

$(element).on('disabledSet', myDisabledHandler);
2 голосов
/ 11 декабря 2011

Это возможно с помощью этого плагина jquery .watch.

http://darcyclarke.me/development/detect-attribute-changes-with-jquery/

Плагин обнаруживает изменения CSS, но я отредактировал его в this JSfiddle для работы с атрибутами.

Проверкаиз этого JSfiddle.

...