помогите разобраться с this
добрый день, всех с новым годом, помогите разобраться с
this собственно в чем вопрос, мне нужно чтобы при клике по элементу списка их id заносились в массив а при повторном клике из этого массива удалялись. С добавлением проблем не возникло а вот с удалением сложнее - элементы не удаляются. Догадываюсь что проблема именно с this, так как если поменять return val != $(this).attr('id');к примеру на return val != '2';все прекрасно работает (соответствующий id удаляется). Перепробывал разные варианты нифига не получается, помогите плиз. $(document).ready(function(){ var id_selected = []; //выделение $("ul#art_gen > li").bind("click", function(){ if ($(this).hasClass("article_selected")){ id_selected = $.grep(id_selected, function(val) { return val != $(this).attr('id'); }); $(this).removeClass(); } else { $(this).addClass("article_selected") id_selected.push(this.id); } alert(id_selected); }); }); Заранее спасибо |
var self = this; id_selected = $.grep(id_selected, function(val) { return val != $(self).attr('id'); }); |
Цитата:
|
uroboros7,
вариант ... :write: <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> .article_selected { background: #FFCC00; } </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function() { var $li = $("ul#art_gen > li"), id_selected = []; $li.on({ click: function() { $(this).toggleClass("article_selected"); id_selected = $.map($li.filter(".article_selected"), function(el) { return el.id }); alert(id_selected) } }) }); </script> </head> <body> <ul id="art_gen"> <li id="1">1</li> <li id="2">2</li> <li id="3">3</li> <li id="4">4</li> <li id="5">5</li> </ul> </body> </html> |
Цитата:
<style> .article_selected { background: #FFCC00; } </style> <script> document.addEventListener("DOMContentLoaded", function () { document.querySelector("ul#art_gen").addEventListener("click", function (event) { if (!this.mas) this.mas = []; var target = event.target; if (target.tagName == "LI") { var index = this.mas.indexOf(target.id); ( index == -1 )? this.mas.push(target.id) : this.mas.splice(index, 1); target.classList.toggle("article_selected"); } console.log(this.mas); }); }); </script> <ul id="art_gen"> <li id="1">1</li> <li id="2">2</li> <li id="3">3</li> <li id="4">4</li> <li id="5">5</li> </ul> |
Часовой пояс GMT +3, время: 08:45. |