Получение номера класса, по которому произведен клик
Добрый день, уважаемые форумчани. Заранее прошу не кидать в меня камнями. Перед мною встала задача, которую можно было бы решить намного проще используя "GetElementById", но все таки я хочу реализовать задумку именно так.
Суть в том, что есть меню опций, с одинаковыми цсс классами. По клике на каждый из них рядом с ним должна появится галочка - (отмечено, мол), по еще одному клику - галочка должна снятся. С добавлением галчоки (в моем случае img) особых пробелм не возникло, а вот с удалением - нужна ваша помощь. Собственно, вот мой быдло-код: <script> $(document).ready(function() { $(".round-img").click(function() { var clicked = document.getElementsByClassName('setting-row'); for (var i = 0; i < clicked.length; i++) { clicked[i].addEventListener("click", adding); function adding(){ { var o=document.createElement('img'); o.src='img/system/yes.png'; o.className="yes-marker"; this.appendChild(o); /*console.log($(this));*/ } if (this.appendChild(o)) { clicked[i].addEventListener("click", del) function del() { this.removeChild(o); } }; } } }) }) </script> |
Illibes,
минимальный html и css сделайте, и лучше не назначать клик в клике, если нет цели исчерпать ресурсы. |
дело в том, что css и html мне как раз аткки править не желательно. Но свою ошибку я уже, кажется, нашел.. итый элемент все арвно попросту доходил до конца и был равен десяти.
Решение, которое более лаконично и как по мне правильно, не до конца у меня работает, но это вопрос времени: (function () { var divs = document.querySelectorAll(".setting-row"); var handler = function() { var index = Array.prototype.indexOf.call(divs, this); var o=document.createElement('img'); o.src='img/system/yes.png'; o.className="yes-marker"; document.getElementsByClassName('setting-row')[index].appendChild(o); } for (var i = 0; i < divs.length; i++) { divs[i].onclick = handler; }()); |
Illibes,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> .setting-row{ border: 1px dashed Gray; padding: 5px; height: 100px; width: 100px ; background-color: rgba(139, 69, 19, 1); } </style> <script> window.addEventListener('DOMContentLoaded', function() { var o=document.createElement('img'); o.src='http://superadm.net/uploads/icons/camera_test.png'; o.classList.add("yes-marker"); var divs = document.querySelectorAll(".setting-row"); [].forEach.call(divs, function(item) { item.addEventListener('click', function() { var img = item.querySelector('.yes-marker'); if (img) item.removeChild(img); else item.appendChild(o.cloneNode()) }); }); }); </script> </head> <body> <div class="setting-row"></div> <div class="setting-row"></div> <div class="setting-row"></div> </body> </html> |
Illibes,
пост №4 запустите код и кликайте по блокам |
Вы просто лучший
|
Часовой пояс GMT +3, время: 19:18. |