Поменять местами классы дивам
Добрый день уважаемые. Подскажите как решить такую задачу.
Есть такая разметка <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, время: 23:57. |