Как я могу быстро преобразовать объект [,] в double [,]?

& lt; rant & gt; Это 2016, и стандарт DOM не помог в решении довольно распространенной проблемы, с которой мы сталкиваемся время от времени. & lt; / rant & gt;

Да, единственный способ удалить Ограниченный обработчик событий должен поддерживать ссылку на ограниченную функцию и использовать ее на removeEventListener, как указано в других решениях здесь.

Однако, когда у вас много слушателей, это становится беспорядочным. Ни один из них не придумал простые функции, которые абстрагируют работу по сохранению ссылок на ограниченные функции. Я придумал две функции с именем on () и off () (jQuery вдохновил имена), которые я добавил ко всем элементам HTMLElements, добавив их в прототип. Код здесь . (Работает только в IE 11+, так как использует WeakMap)

Таким образом, используя это, вы можете добавить прослушиватели событий и удалить их так:

this.myButton.on('click', this.clickListener, this);
this.myButton.off('click', this.clickListener, this); //yup, it's removed

Сведения о реализации и принятых решениях много, поэтому я не буду это объяснять:)

Если вам не нравится добавлять функции к родным объектам, вы можете добиться этого, немного изменив мой код. (Но серьезно, стандарт DOM должен был добавить API для решения этой проблемы в первую очередь).

13
задан ja72 22 February 2011 в 20:44
поделиться