使用Jquery .each获取rel属性

时间:2016-02-23 02:05:34

标签: javascript jquery arrays

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

.Dispose()

但是,如果我使用"这个",它可以工作。

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

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

2 个答案:

答案 0 :(得分: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') );
});

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

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

答案 1 :(得分:2)

如果您记录一个jQuery对象,您可以看到所有选定的元素都以数组样式的方式以数字形式列出。

var domElement = jqueryObject[0];//returns the first element of the jquerycollection

当您使用 .each 函数时,它将传递本机domElement作为value参数,而不是该元素的jQuery对象。 这意味着你必须用这样的jquery包装domElement。

$(domElement).attr('rel');

这使您的代码看起来像这样。

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