Как добавить, убрать клаcс с помощью JS

215
11 октября 2018, 03:10

Есть такой код HTML

    <ul class="list">
      <li class="list-item">
        <ul class="add-list">
          <li class="add-list-item">
            <a href="" class="link-1">Ссылка 1</a>
          </li>
          <li class="add-list-item">
            <a href="" class="link-2">Ссылка 2</a>
          </li>
          <li class="add-list-item">
            <a href="" class="link-3">Ссылка 3</a>
          </li>
        </ul>
      </li>
      <li class="list-item">
        <ul class="add-list">
          <li class="add-list-item">
            <a href="" class="link-1">Ссылка 1</a>
          </li>
          <li class="add-list-item">
            <a href="" class="link-2">Ссылка 2</a>
          </li>
          <li class="add-list-item">
            <a href="" class="link-3">Ссылка 3</a>
          </li>
        </ul>
      </li>
    </ul>

Как будет правильно написать скрипт, чтобы при клике на ссылку с классом .link-3 только к родительскому li.list-item добавлялся класс .new-class, а при повторном клике класс .new-class убирался? Буду благодарен за помощь!

Answer 1

let li = document.getElementsByClassName('list-item'); 
for (let i of li) { 
  i.addEventListener('click', function(e) { 
    if (e.target.classList.contains('link-3')) this.classList.toggle('new-class'); 
  }) 
 
}
.new-class a { 
  color: red; 
}
<ul class="list"> 
  <li class="list-item"> 
    <ul class="add-list"> 
      <li class="add-list-item"> 
        <a href="#" class="link-1">Ссылка 1</a> 
      </li> 
      <li class="add-list-item"> 
        <a href="#" class="link-2">Ссылка 2</a> 
      </li> 
      <li class="add-list-item"> 
        <a href="#" class="link-3">Ссылка 3</a> 
      </li> 
    </ul> 
  </li> 
  <li class="list-item"> 
    <ul class="add-list"> 
      <li class="add-list-item"> 
        <a href="#" class="link-1">Ссылка 1</a> 
      </li> 
      <li class="add-list-item"> 
        <a href="#" class="link-2">Ссылка 2</a> 
      </li> 
      <li class="add-list-item"> 
        <a href="#" class="link-3">Ссылка 3</a> 
      </li> 
    </ul> 
  </li> 
</ul>

Answer 2

let linkItem = document.querySelectorAll('.list-item'); 
 
for (let i = 0; i < linkItem.length; i++) { 
 
  linkItem[i].addEventListener('click', function(event) { 
    event.preventDefault(); 
    var target = event.target; 
 
    if (target.className === 'link-3') { 
      this.classList.toggle('active'); 
    } 
 
  }); 
 
}
.active { 
  border: 1px solid #f00; 
}
<ul class="list"> 
  <li class="list-item"> 
    <ul class="add-list"> 
      <li class="add-list-item"> 
        <a href="" class="link-1">Ссылка 1</a> 
      </li> 
      <li class="add-list-item"> 
        <a href="" class="link-2">Ссылка 2</a> 
      </li> 
      <li class="add-list-item"> 
        <a href="" class="link-3">Ссылка 3</a> 
      </li> 
    </ul> 
  </li> 
  <li class="list-item"> 
    <ul class="add-list"> 
      <li class="add-list-item"> 
        <a href="" class="link-1">Ссылка 1</a> 
      </li> 
      <li class="add-list-item"> 
        <a href="" class="link-2">Ссылка 2</a> 
      </li> 
      <li class="add-list-item"> 
        <a href="" class="link-3">Ссылка 3</a> 
      </li> 
    </ul> 
  </li> 
</ul>

READ ALSO
Вывести простые числа циклом while [закрыт]

Вывести простые числа циклом while [закрыт]

Помогите, пожалуйста, выполнить задание (если можно, то с подробными комментариями): С помощью цикла while вывести все простые числа в промежутке...

289
Hover на картинке [закрыт]

Hover на картинке [закрыт]

Есть картинка с прозрачным фономКак отрабатывать hover при наведении на саму картинку, а не на ее прозрачный фон?

190
React js Два параметра функции

React js Два параметра функции

есть проблема с кодом: Для идеальной работы функции надо написать в параметрах props и {company}, проблема в том, что из-за того параметра который...

210