Эффективные способы нацеливания на все элементы, кроме элемента, на который нажали, в JavaScript

В веб-разработке часто возникают ситуации, когда вам необходимо нацелиться на несколько элементов на странице и манипулировать ими, за исключением того, который вызвал определенное событие. Это может быть полезно для различных целей, например для выделения или изменения элементов. В этой статье мы рассмотрим несколько методов достижения этой цели с помощью JavaScript, а также примеры кода.

Метод 1: использование селекторов CSS и псевдокласса :not()
Псевдокласс :not() в CSS позволяет исключать определенные элементы из выделения. Комбинируя его с соответствующими селекторами CSS, вы можете настроить таргетинг на все элементы, кроме того, на который щелкнули. Вот пример:

document.addEventListener('click', function(event) {
  var elementsToExclude = document.querySelectorAll(':not(.clicked-element)');
  // Perform actions on elementsToExclude
});

Метод 2: циклическое перебор списков элементов
Если у вас есть коллекция элементов, вы можете просмотреть их и применить нужные действия ко всем элементам, кроме того, на который щелкнули. Вот пример использования метода forEach:

var elements = document.getElementsByClassName('target-elements');
Array.prototype.forEach.call(elements, function(element) {
  element.addEventListener('click', function(event) {
    Array.prototype.forEach.call(elements, function(el) {
      if (el !== element) {
        // Perform actions on el
      }
    });
  });
});

Метод 3: использование свойства event.target
Свойство event.targetдает ссылку на элемент, вызвавший событие. Вы можете использовать это свойство, чтобы исключить выбранный элемент из целевых элементов. Вот пример:

var elements = document.getElementsByClassName('target-elements');
Array.prototype.forEach.call(elements, function(element) {
  element.addEventListener('click', function(event) {
    var clickedElement = event.target;
    Array.prototype.forEach.call(elements, function(el) {
      if (el !== clickedElement) {
        // Perform actions on el
      }
    });
  });
});

Метод 4: добавление и удаление прослушивателей событий
В этом методе вы можете добавить прослушиватели событий ко всем элементам, кроме элемента, по которому щелкнули, и удалить прослушиватель из элемента, по которому щелкнули. Вот пример:

var elements = document.getElementsByClassName('target-elements');
function handleClick(event) {
  // Perform actions on elements except the clicked one
}
Array.prototype.forEach.call(elements, function(element) {
  element.addEventListener('click', handleClick);
});
document.addEventListener('click', function(event) {
  Array.prototype.forEach.call(elements, function(element) {
    element.removeEventListener('click', handleClick);
  });
});

В этой статье мы рассмотрели различные методы таргетинга на все элементы веб-страницы, кроме элемента, на который был сделан клик. Эти методы обеспечивают гибкость и контроль при динамическом манипулировании несколькими элементами. Используя селекторы CSS, циклически просматривая списки элементов, используя свойство event.target или добавляя или удаляя прослушиватели событий, вы можете добиться эффективного таргетинга элементов в JavaScript. Поэкспериментируйте с этими методами в своих проектах, чтобы улучшить свои навыки веб-разработки.