Javascript.RU

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

jquery colorpick срабатывание по клику
Здравствуйте друзья, имеется вот такая небольшая наработка http://baxtex.ru/test/index.html , в основе лежит svg, все элементы бабочек объединены под одним классом #babochka, цветы классом #cvet, точки классом #tk, стоит следующая задача, необходимо реализовать такую штуку, что бы при клике например на бабочку, у нас выплывал колорпикер,и я выбирал нужный мне цвет, и все бабочки на странице принимали выбранный цвет, так как в js в общем то я слишком слаб, пришел за помощью к вам, буду благодарен, если объясните как это работает, так же во вложении добавил архив с файлами странички.
P.s буду благодарен за помощь
Вложения:
Тип файла: zip color.zip (11.4 Кб, 2 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 22.01.2018, 12:06
Новичок на форуме
Отправить личное сообщение для borockov Посмотреть профиль Найти все сообщения от borockov
 
Регистрация: 22.01.2018
Сообщений: 4

Сообщение от Dilettante_Pro Посмотреть сообщение
borockov,


Это не классы, а id, но id должны быть уникальными
id
Иначе ничего работать не будет.
Переделывайте id на class
допустим, я переделал, а дальше как мне подключить к странице колопикер?
Ответить с цитированием
  #3 (permalink)  
Старый 22.01.2018, 12:57
Новичок на форуме
Отправить личное сообщение для borockov Посмотреть профиль Найти все сообщения от borockov
 
Регистрация: 22.01.2018
Сообщений: 4

Что то я совсем запутался, у меня никак не получается внутри svg подключить скрипты js
Ответить с цитированием
  #4 (permalink)  
Старый 22.01.2018, 13:41
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<style>
.ring { fill:red; }
.square { fill:green;}
#modal { position:absolute; display:none; }

</style>
<script>
window.addEventListener("DOMContentLoaded", function() {
  var elems = document.querySelectorAll(".ring, .square"),
  curClass = "";

  [].forEach.call(elems, function(el) {
     el.addEventListener("click", function () {
            curClass = el.classList[0];
            modal.style.display = "block"; 
     });
  });
  modal.onchange = function() {
           var col = this.value;
           [].forEach.call(elems, function(it) {
               if(it.classList[0] == curClass) it.style.fill = col;
           });
           modal.style.display = "none";      
  }
});
</script>
<input id="modal" type="color">

<svg width="700px" height="200px"> 
   <circle class = "ring" cx="50px" cy="50px" r="25px"   />
   <circle class = "ring" cx="150px" cy="70px" r="25px"  />
   <rect class = "square" x="70px" y="100px" width="50px" height="50px"  />
   <rect class = "square" x="170px" y="30px" width="50px" height="50px"  />
</svg>

Последний раз редактировалось Dilettante_Pro, 31.01.2018 в 14:20.
Ответить с цитированием
  #5 (permalink)  
Старый 22.01.2018, 15:39
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Вариант jQuery
<style>
.ring { fill:red; }
.square { fill:green;}
#modal { position:absolute; display:none; }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<script>
$( function() {
   var elems = $(".ring, .square"),
         picker = $("#modal"),
         that = '';
   elems.on("click", function () { 
             that = this;
             picker.show();
   });
   picker.on("change", function () {
       var col = $(this).val(); 
       elems.each(function(i, el){
                 if($(that).attr('class') == $(el).attr('class')) el.style.fill = col;
       });
       picker.hide();
   });
});
</script>
<input id="modal" type="color">

<svg width="700px" height="200px"> 
   <circle class = "ring" cx="50px" cy="50px" r="25px"   />
   <circle class = "ring" cx="150px" cy="70px" r="25px"  />
   <rect class = "square" x="70px" y="100px" width="50px" height="50px"  />
   <rect class = "square" x="170px" y="30px" width="50px" height="50px"  />
</svg>

Последний раз редактировалось Dilettante_Pro, 31.01.2018 в 14:19.
Ответить с цитированием
  #6 (permalink)  
Старый 23.01.2018, 09:03
Новичок на форуме
Отправить личное сообщение для borockov Посмотреть профиль Найти все сообщения от borockov
 
Регистрация: 22.01.2018
Сообщений: 4

Огромное тебе спасибо!!!! Очень сильно мне помог
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как вызвать функцию jQuery по клику checkbox shurek Общие вопросы Javascript 4 26.07.2013 15:27
jquery UI. Возвращение Элемента по клику. Isaac jQuery 0 27.03.2012 20:42
jQuery: событие по второму подрят клику timyrio Общие вопросы Javascript 23 02.05.2011 01:11
JQuery плагин lightbox: На время отключить срабатывание senseysensor jQuery 2 23.12.2010 10:28
Jquery по клику спрятать/показать элемент qwermjk jQuery 7 02.07.2010 22:02