2016-05-17 3 views
-2

У меня есть простой JS событие:Получить ClassList от события

var changeAddress = document.getElementsByClassName('modal-open'); 

if (changeAddress.length) { 
    var a = 0; 
    while (a < changeAddress.length) { 
     changeAddress[a].addEventListener('click', function() { 
      console.log(this); // Here i want to get classList 
      document.querySelector('.modal').removeAttribute('hidden'); 
     }); 
     a++; 
    } 
} 

Как я могу получить ClassList от this?

Не обязательно получить его от this или выбросить classList. Я просто хочу получить все имена классов элемента, на котором запускается событие. Благодаря!

+3

Если код, который вы написали в обработчик событий, то вы можете напрямую использовать event.target.classList –

+0

Что такое 'this' в этом контексте (где вы делаете' console.log (this) ')? В этот момент вы не находитесь внутри обработчика кликов, почему вы хотите, чтобы «classList» был там? * Внутри * обработчик щелчка, вы можете сделать 'this.classList'. –

+0

И проблема в том, что ... –

ответ

1

В параметре event handler callback вы можете получить event. С параметром 'event' мы можем получить список классов, используя либо className, либо classList.

  1. Использование ClassList: event.target.classList непосредственно возвращает список имен классов в массиве.

  2. Использование className: event.target.className будет возвращать строковое представление имен классов с пространством в качестве разделителя. Итак, вы можете использовать event.target.className.split("/\s"), который будет возвращать массив имен классов.


Мы можем использовать Classname или ClassList. className поддерживается старыми браузерами, но изменение (добавить, переключить, удалить ...) классов - это утомительная задача , поэтому классList введен и прост в использовании.

Однако classList свойство not widely supported yet

Пожалуйста, обратитесь Code with classList does not work in IE? для кросс поддержки браузера

Смежные вопросы