Jquery 数组和数据属性

Jquery Array and Data Attributes

为什么我在使用 Jquery select 后无法访问对象中的 .data() 或 .attr()?

这是问题所在,我有一组分配给它们的特定 class 的 div。我想 select 使用 Jquery 的所有 div 并将它们分配给一个数组,然后解析该数组并查看每个数据属性以找到某些值。

<div class="Divs" data-eventid="1"></div>
<div class="Divs" data-eventid="2"></div>
<div class="Divs" data-eventid="3"></div>

The Following 获取与 selector 匹配的元素列表,并将它们分配给事件。

var events = [];
    $('.Divs').each(function () {
        events.push($(this));
    });

出于解释原因,变量 {n1, n2, n3} 被分解

$.each(events, function(idx, val){
  var n1 = events[idx];
  var n2 = n1[0];
  var n3 = n2.data();  //  **.data() is Undefined
});

当我尝试解析数组并提示不支持/未定义 .data() 或 .attr() 时?

但如果我执行以下操作,它会正常工作

 $('.Divs').each(function () {
   var getIdValue = $(this).attr('eventid'); // Works;
   var getIdValue2 = $(this.data('eventid'); // works; 
)};

只是想知道为什么一个有效而另一个无效。

检查这个:

http://jsfiddle.net/brvk9q3p/

应该是:var n3 = $(n2).data();

这是因为,n2指的是div。您需要使用 jQuery 引用来获取其 data().

检查控制台,当你的运行 fiddle..你会得到更多的想法。