Javascript 使用JQuery';当选择器返回多个元素时,返回s.attr()

Javascript 使用JQuery';当选择器返回多个元素时,返回s.attr(),javascript,jquery,attr,Javascript,Jquery,Attr,我试图从几个字段中的每个字段中提取两条数据。所有字段都被赋予了相同的“名称”,以便于引用 <input type="text" name="common_name" data-X='ABC'> 由于当选择器基于id选择元素时,通常使用attr()不会有问题,因此我认为问题与以下事实有关:在这种情况下,jQuery返回了多个元素。我感到困惑的是,我认为get(#)应该抓取一个特定的……在这种情况下,我看不出问题出在哪里。(毕竟,当我使用val()时,使用get(#)确实有效) 那么

我试图从几个字段中的每个字段中提取两条数据。所有字段都被赋予了相同的“名称”,以便于引用

 <input type="text" name="common_name" data-X='ABC'>
由于当选择器基于id选择元素时,通常使用
attr()
不会有问题,因此我认为问题与以下事实有关:在这种情况下,jQuery返回了多个元素。我感到困惑的是,我认为
get(#)
应该抓取一个特定的……在这种情况下,我看不出问题出在哪里。(毕竟,当我使用
val()
时,使用
get(#)
确实有效)


那么…为什么attr()在这里不起作用呢?

attr是一个jquery fn,应该由jquery对象调用

像这样使用

$('[name=common_name]').attr('data-X')
 <input type="text" name="common_name" data-X='ABC'>
 <input type="text" name="common_name" data-X='DEF'>
 <input type="text" name="common_name" data-X='GHI'>
所以试试看

dataX = $($('[name=common_name]').get(i)).attr('data-X');
返回没有该方法的dom元素引用,因此可以使用将返回jQuery对象的方法

var length = $('[name=common_name]').size();
for (var i = 0; i < length; i++) {
    var value = parseInt($('[name=common_name]').eq(i).val()); //doesn't kill the script            
    var dataX = $('[name=common_name]').eq(i).attr('data-X'); //Script is killed here
}

假设html是这样的

$('[name=common_name]').attr('data-X')
 <input type="text" name="common_name" data-X='ABC'>
 <input type="text" name="common_name" data-X='DEF'>
 <input type="text" name="common_name" data-X='GHI'>
只想告诉他attr()不是dom元素的fn,请更改我的答案
$('input[name="common_name"]').each(function() {
     var el = $(this);
     text_val = el.val();
     data = el.attr('data-X');
     console.log(text_val);
     console.log(data);
});