помогите разобраться с 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, время: 17:41. |