使用jQuery .each()函数设置数组?

hel*_*llo 0 arrays indexing each jquery function

我正在尝试通过jQuery的.each()函数建立一个数组,但似乎我没有正确地做到这一点?

我在html中有属性,例如:

<div class="cheers" data-fname = "fname" data-lname="lname">some ish..</div><!-- going through a while loop!-->
Run Code Online (Sandbox Code Playgroud)

然后我有一个jquery函数,做这样的事情

var arrayMe = [];
$(".cheers").each(function(index){
    arrayMe[index] = $(".cheers").attr('data-fname')+","+$(".cheers").attr('data-lname');
});
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试做各种警报时:

alert(arrayMe); //this gives me the fname,lname
alert(arrayMe[0]); //this gives me the first fname,lname in the array
alert(arrayMe[0][1]); //this SUPPOSED to give me the first lname, but it gives me a letter...
Run Code Online (Sandbox Code Playgroud)

Rob*_*b W 6

你必须使用arrayMe[1]而不是arrayMe[0][1].

你得到一个字母,因为它arrayMe[0]是一个字符串,并arrayMe[0][1]检索给定字符串的第二个字符.它相当于arrayMe[0].charAt(1).

如果要构建2D数组,请使用:

var arrayMe = [];
$(".cheers").each(function(index){
    var $this = $(this);
    arrayMe[index] = [$this.attr('data-fname'),
                      $this.attr('data-lname')];
});
alert(arrayMe);        // Array. Shows all pairs, eg: [['fname', 'lname'], ...]
alert(arrayMe[0]);     // Array. Shows first pair, eg: ['fname', 'lname']
alert(arrayMe[0][0]);  // String. fname            eg:  'fname'
alert(arrayMe[0][1]);  // String. lname            eg:           'lname'
Run Code Online (Sandbox Code Playgroud)

(我也固定的另一个问题,在你的代码替换$('.cheers')$(this))