Если уникальный элемент нажал / Если нажал за пределами div (включая другой уникальный элемент)

0

Я ищу способ переключить класс, основанный на том, что нажал. Скажем, например, у меня есть следующее:

<div id="element_1"> <!-- notice unique id attached to the end -->
   <button>My Button</button>
   <div class="hidden_wrapper">
      <span>Something</span>
      <span>Something else</span>
   </div>
</div>

Насколько я понимаю, я могу сделать что-то подобное, чтобы вызвать этот уникальный идентификатор (непроверенный):

$(document).on("click", "[id^=element] button", function() { $('[id^=element] hidden_wrapper').toggleClass('some_class'); });

Я хотел бы переключить этот класс под этим уникальным идентификатором (который фактически удалит класс), если что-либо вне моего #element_1.hidden_wrapper

Может ли кто-то пролить свет здесь?

Теги:

1 ответ

0

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

$("html").on("click", function() {
    $(".hidden_wrapper").toggleClass("some_class");
    $(this).next().toggleClass("some_class");
})

Это неэлегантно, потому что

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

Обе проблемы легко исправлены с еще большим количеством кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню