Поменять местами классы дивам
Добрый день уважаемые. Подскажите как решить такую задачу.
Есть такая разметка <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. Ну и так далие для других дивов, при нажатие происходило бы удаление и классы менялись бы местами. Подскажите, пожалуйста. :) |
Цитата:
<!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>
|
Ну и типа окончательный вариант...
<!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>
|
Спасибо. :thanks:
Буду ещё очень признателен если растолкуете что происходит здесь - var e1=o1.get(0); /// Что здесь происходит ? Мы берем первый элемент из выборки объектов ???? и здесь var c1=e1.className.match(/Namber\d+/)[0]; // Первый раз встречаюсь с таким className.match - что за зверь такой ? :blink: |
Цитата:
http://jquery-docs.ru/Core/get/#index Цитата:
http://javascript.ru/string/match |
| Часовой пояс GMT +3, время: 20:07. |