从具有相同类

时间:2017-02-24 16:02:29

标签: javascript jquery

我正在尝试从具有相同类的多个div元素中获取多个数据属性值,例如:

'<div class="col-2">Category: <span class="title-cat tempcat" data-category="' + catId + '">'+ categoryName +'</span></div>'

我正在尝试获取data-category属性,但是这里的问题是这行有多个实例,所以我想建立一个我随后用AJAX传递的所有data-categories的列表

到目前为止,我建立了一个列表并继续在列表中插入第一行值:

var tempcat = $.map($('.title-cat.tempcat'), function() {
  return $('.title-cat.tempcat').attr('data-category');
});

传递tempcat:154, 154当有两行时应该说154, 174

2 个答案:

答案 0 :(得分:1)

每次都会获得相同的项目,因为attr抓住了第一个项目。您需要选择不同的东西 - 数组中的项目:

var tempcat = $.map($('.title-cat.tempcat'), function(el) {
    return $(el).attr('data-category');
});

答案 1 :(得分:1)

问题是因为您正在选择.title-cat.tempcat处理程序中的所有map()元素,并且对元素集合调用attr()只会查看集合中的第一个元素。< / p>

要解决此问题,请使用this关键字引用当前元素:

&#13;
&#13;
var tempcat = $('.title-cat.tempcat').map(function() {
    return $(this).data('category');
}).get();

console.log(tempcat);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="col-2">Category: <span class="title-cat tempcat" data-category="154">#154</span></div>
<div class="col-2">Category: <span class="title-cat tempcat" data-category="157">#157</span></div>
&#13;
&#13;
&#13;