Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.10.2016, 11:50
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Поменять местами классы дивам
Добрый день уважаемые. Подскажите как решить такую задачу.

Есть такая разметка

<div id="full">
<div class="square Namber1">1</div>
<div class="square Namber2">2</div>
<div class="square Namber3">3</div>
</div>

По нажатию на один из элементов этого блока, этому диву прибавляется класс .circle (Допустим нажали на 1 получили <div class="square Namber1 circle"> )

Если нажимаем на тот же див, ничего не происходит.
Если ещё раз нажать на элемент из блока full (другой див, допустим 2 ) необходимо что б уже этому диву добавился класс circle (у изначального дива он убрался) и произошла замена классов Namber. То есть, у того изначального с классом circle стало Namber2 а у второго Namber1. Ну и так далие для других дивов, при нажатие происходило бы удаление и классы менялись бы местами.

Подскажите, пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 17.10.2016, 14:08
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от Black_Star
По нажатию на один из элементов этого блока, этому диву прибавляется класс .circle (Допустим нажали на 1 получили <div class="square Namber1 circle"> )

Если нажимаем на тот же див, ничего не происходит.
Если ещё раз нажать на элемент из блока full (другой див, допустим 2 ) необходимо что б уже этому диву добавился класс circle (у изначального дива он убрался)
Это вовсе просто...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.circle {
	border: 1px solid red;
}
</style>
<script type='text/javascript'>
$(function(){
	$('#full > div').click(function(){
		if ($(this).hasClass('circle')) {
			return;
		};
		$(this).parent().find('.circle').removeClass('circle');
		$(this).addClass('circle');
	});
});
</script>
</head>
<body>
<div id="full">
	<div class="square Namber1">1</div>
	<div class="square Namber2">2</div>
	<div class="square Namber3">3</div>
</div>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 17.10.2016, 14:20
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Ну и типа окончательный вариант...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.circle {
	border: 1px solid red;
}
.Namber1 {
	color: red;
}
.Namber2 {
	color: green;
}
.Namber3 {
	color: blue;
}
</style>
<script type='text/javascript'>
$(function(){
	$('#full > div').click(function(){
		var o1=$(this);
		if (o1.hasClass('circle')) {
			return;
		};
		var e1=o1.get(0);
		var o2=o1.parent().find('.circle');
		if (o2.length==0) {
			o1.addClass('circle');
			return;
		};
		o2.removeClass('circle');
		o1.addClass('circle');
		var e2=o2.get(0);
		var c1=e1.className.match(/Namber\d+/)[0];
		var c2=e2.className.match(/Namber\d+/)[0];
		alert(c2+'<->'+c1);
		o1.removeClass(c1);
		o2.removeClass(c2);
		o1.addClass(c2);
		o2.addClass(c1);
	});
});
</script>
</head>
<body>
<div id="full">
	<div class="square Namber1">1</div>
	<div class="square Namber2">2</div>
	<div class="square Namber3">3</div>
</div>
</body>
</html>

Последний раз редактировалось ksa, 17.10.2016 в 14:33.
Ответить с цитированием
  #4 (permalink)  
Старый 17.10.2016, 16:02
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Спасибо.

Буду ещё очень признателен если растолкуете что происходит здесь -
var e1=o1.get(0); /// Что здесь происходит ? Мы берем первый элемент из выборки объектов ????
и здесь
var c1=e1.className.match(/Namber\d+/)[0]; // Первый раз встречаюсь с таким className.match - что за зверь такой ?
Ответить с цитированием
  #5 (permalink)  
Старый 18.10.2016, 08:12
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от Black_Star
что происходит здесь -
var e1=o1.get(0); /// Что здесь происходит ?
Мы берем первый элемент из выборки объектов ?
Не просто первый, но еще и "превращенный" в элемент ДОМ
http://jquery-docs.ru/Core/get/#index
Сообщение от Black_Star
и здесь
var c1=e1.className.match(/Namber\d+/)[0]; // Первый раз встречаюсь с таким className.match
что за зверь такой ?
Т.о. я узнаю какой именно класс из Namber* есть у элемента
http://javascript.ru/string/match
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jquery - поменять местами таблицы Sergei-b84 jQuery 14 11.03.2015 20:00
Поменять местами символы, относительно их положения k1ker Общие вопросы Javascript 5 01.01.2014 19:17
Поменять местами два <div> Bay Events/DOM/Window 11 11.02.2013 22:37
Как поменять местами элементы? dezzignet jQuery 2 19.07.2012 13:36
Как поменять местами элементы в дереве элемента родителя? rar11 Events/DOM/Window 8 01.04.2009 18:53