Javascript 使用Jquery获取rel属性
我有一个带有不同rel值的复选框列表。我下面的jquery代码给出了我的未定义Javascript 使用Jquery获取rel属性,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个带有不同rel值的复选框列表。我下面的jquery代码给出了我的未定义 var checked_keys=[]; $("input[type='checkbox']:checked").each(function(index, value){ checked_keys.push( value.attr('rel') ); }); 但是,如果我使用“this”,它会起作用 var checked_keys=[]; $("input[type='checkbox']:checked
var checked_keys=[];
$("input[type='checkbox']:checked").each(function(index, value){
checked_keys.push( value.attr('rel') );
});
但是,如果我使用“this”,它会起作用
var checked_keys=[];
$("input[type='checkbox']:checked").each(function(){
checked_keys.push( $(this).attr('rel') );
});
有人能解释一下。每个值为的方法和每个值为$(this)的方法之间的区别吗?在jQuery中,
$。每个方法都有一个回调,返回索引和DOM节点,后者是本机DOM节点,而不是用jQuery包装的,因此,需要对它进行包装,才能使用jQuery方法,如attr()
,否则必须使用本机方法,如getAttribute('rel')
作为旁注,还有一个似乎更合适的$.map
方法
var checked_keys = $("input[type='checkbox']:checked").map(function(index, value){
return $(value).attr('rel');
});
如果记录jQuery对象,可以看到所有选定元素都以数组样式以数字形式列出
var domElement = jqueryObject[0];//returns the first element of the jquerycollection
使用.each函数时,它将传递本机domeElement作为值参数,而不是该元素的jQuery对象。
这意味着您必须像这样用jquery包装domeElement
$(domElement).attr('rel');
var checked_keys=[];
$("input[type='checkbox']:checked").each(function(index, vale){
checked_keys.push( $(value).attr('rel') );
});
这使您的代码看起来像这样
$(domElement).attr('rel');
var checked_keys=[];
$("input[type='checkbox']:checked").each(function(index, vale){
checked_keys.push( $(value).attr('rel') );
});
您是否尝试了$(value)
而不是value
?可能是返回javascript元素中的值,而不是jQuery元素。由于$(“输入[type='checkbox']:选中”)[0]
将返回一个javascript元素。值和此
引用普通DOM元素对象,而不是Jquery对象<代码>$(值)==$(此)
和值===此
。如果简单操作是您的目标,那么重新创建jQuery对象的成本可能会很高,您还可以使用value.getAttribute(“rel”)