使用Jquery .each获取rel属性

Gun*_*ter 5 javascript arrays jquery

我有一个具有不同rel值的复选框列表.我的以下jquery代码给出了我的undefined.

var checked_keys=[];
$("input[type='checkbox']:checked").each(function(index, value){
    checked_keys.push( value.attr('rel') );
});
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用"this",它就可以了.

var checked_keys=[];
$("input[type='checkbox']:checked").each(function(){
    checked_keys.push( $(this).attr('rel') );
});
Run Code Online (Sandbox Code Playgroud)

有人可以解释.each与value和.each与$(this)之间的区别是什么?

ade*_*neo 2

在 jQuery 中,该$.each方法有一个回调,返回索引和 DOM 节点,后者是本机 DOM 节点,没有包装在 jQuery 中,因此需要包装它才能与 jQuery 方法一起使用,否则attr()你必须使用本机方法,例如getAttribute('rel')

var checked_keys=[];
$("input[type='checkbox']:checked").each(function(index, value){
    checked_keys.push( $(value).attr('rel') );
});
Run Code Online (Sandbox Code Playgroud)

作为旁注,还有一种$.map方法,似乎更合适

var checked_keys = $("input[type='checkbox']:checked").map(function(index, value){
    return $(value).attr('rel');
});
Run Code Online (Sandbox Code Playgroud)