Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проверка наличия класса (https://javascript.ru/forum/dom-window/71111-proverka-nalichiya-klassa.html)

Янковиц 26.10.2017 18:09

Проверка наличия класса
 
Есть разметка:
<div class="parent">
      <div class="one"></div>
</div>
<div class="parent">
      <div class="one"></div>
</div>
<span class=""></span>

при щелчке по элементу one в первом контейнере с классом parent добавляется еще один класс. Получается:
<div class="parent">
      <div class="one active"></div>
</div>
<div class="parent">
      <div class="one"></div>
</div>
<span class="disabled"></span>

Как задать условие, при котором при клике по one происходит проверка всех элементов на странице с этим классом, и если во всех элементах one есть класс active, то у span удаляется disabled?

Dilettante_Pro 26.10.2017 18:14

Янковиц,
А что не получается? Какие вопросы?

Янковиц 26.10.2017 18:18

Получается что-то вроде :
jQuery(document).ready(function($) {
	jQuery('.one').click(function() {
		jQuery(this).addClass('active');

		if($('.parent').children().is('.active')){
			alert('Выберите опции товара перед его добавлением в вашу корзину.');
		} else {
			jQuery('span').removeClass('disabled');
		}
	});
});

То-есть, классы добавляются, но у span не могу удалить disabled

Янковиц 26.10.2017 18:19

В условии ошибка.

Янковиц 26.10.2017 18:24

Небольшое уточнение. Количество элементов с классом one может быть разное. И active должен быть только у одного элемента.
<div class="parent">
      <div class="one"></div>
      <div class="one"></div>
</div>
<div class="parent">
      <div class="one"></div>
      <div class="one"></div>
</div>
<span class=""></span>

Dilettante_Pro 26.10.2017 18:28

Янковиц,
А когда у span появляется disabled ?

Dilettante_Pro 26.10.2017 18:29

Цитата:

Сообщение от Янковиц
active должен быть только у одного элемента

Всего у одного? Или в родительском div?

Янковиц 26.10.2017 18:30

Когда в каждом parent есть по одному one с классом active.

Rasy 26.10.2017 18:30

javascript every
 
Цитата:

Сообщение от Янковиц
Как задать условие, при котором при клике по one происходит проверка всех элементов на странице с этим классом, и если во всех элементах one есть класс active, то у span удаляется disabled?

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>javascript every</title>
</head>
<body>

	<div class="parent">
		<div class="one">one</div>
	</div>
	<div class="parent">
		<div class="one">one</div>
	</div>
	<span class="disabled">span</span>

	<script>
		(function(span, hook, target) {
			var sp = document.querySelector('.'+span);
			document.addEventListener('click', function(e) {
				if (e.target.classList.contains(target)) {
					e.target.classList.add(hook);
					var qf = [].every.call(document.querySelectorAll('.'+target), function(elem, indx) {
						return elem.classList.contains(hook);
					});
					if (qf) sp.classList.remove(span);
				}
			});
		})('disabled', 'active', 'one');
	</script>

</body>
</html>

Янковиц 26.10.2017 18:31

Элемент с классом activ должен быть в каждом parent


Часовой пояс GMT +3, время: 19:03.