Есть ли способ найти все события для элемента в javascript? или способ отвязать все события от элемента?Список событий элемента
Спасибо.
Есть ли способ найти все события для элемента в javascript? или способ отвязать все события от элемента?Список событий элемента
Спасибо.
Невозможно сделать это напрямую с помощью javascript.
JQuery имеет несколько функций для отслеживания этих данных.
Один «чистый» способ сделать это - изменить функцию addEventListener/attachEvent с помощью прототипирования (поиск про материал прототипа javascript, а не фреймворк).
Если у вас есть пользовательская функция для добавления/удаления событий, вы можете ее настроить.
Ну, вот и все.
Конечно! Взгляните на это, чтобы связать/UNBIND события http://api.jquery.com/category/events/ и использовать этот фрагмент кода JQuery, чтобы получить все события, связанные с элементом в виде HashSet из пары ключей «EventName/функции делегата»
jQuery(elem).data('events');
Это работает, только если вы уже используете jQuery. –
есть ли способ сделать это без jQuery? – errorhandler
Ну, afaik все, что нужно, это включить API jQuery. Этот кусок кода должен работать также и для событий, не связанных непосредственно с jQuery. – NinjaCross
Если вы не хотите использовать jQuery, быстрый и грязный способ (и там будет лучше), нужно будет прокрутить параметры элемента и проверить функции, начинающиеся с «on» (onclick и т. Д.).
var el = document.getElementById('elementid') ;
el.onclick = function(e) { console.log('Clicked!') ; } ; // Attached test event.
if(typeof(el)=='object') {
for(var i in el) {
if(i.substr(0,2) == 'on' && typeof(el[i])=='function') {
el[i] = function() {} ; // Unbind with null function.
}
}
}
спасибо, я дам ему попробовать – errorhandler
не работает для меня :( – errorhandler
Я использую пользовательскую функцию addEvents (handle ie и т. Д.). Есть ли способ сохранить все события (имена и функции), добавленные к элементу? – errorhandler
Привет, обработчик ошибок, я подозреваю, что вы использовали настраиваемую функцию для обработки IE addEvent. Ну, я думаю, вы можете настроить эту функцию, добавив к глобальному var/object с данными о событиях - целевым элементом, целевым событием, и функцию обратного вызова, а затем в этом пользовательском var/object добавьте некоторые функции для извлечения необходимых данных. – Dave