jquery:如何从元素中获取数据而不进行循环?

时间:2017-08-04 08:24:51

标签: jquery

         

$('input:checkbox:checked')

为我提供一个数组(3项)的已检查输入作为数组。

$('input:checkbox:checked').data('userid')

这为我提供了FIRST检查输入的数据用户ID。结果= 1

有没有办法获取所有已检查输入的数据而无需编写循环? 例如: [1,2,3]

2 个答案:

答案 0 :(得分:3)

没有。在没有循环的情况下获取值是不可能的。

你可以避免传统的循环。如果您正在寻找更清洁的解决方案,请使用地图功能



var result = $('input:checkbox:checked').map(function() {
    return $(this).attr('userid');
}).get();
console.log(result);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="vehicle" value="Bike"> I have a bike<br>
  <input type="checkbox" userid="1" name="vehicle" value="Car" checked> I have a car<br>
  
  <input type="checkbox" userid="2" name="vehicle" value="Car" checked> I have two legs<br>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以将自己的函数添加到jquery以避免代码重复。 试试这个:

$.fn.extend({
           pluckAttr: function (attr) {
              return $(this).map(function(){
                   return $(this).attr(attr);
               }).get();
           }
       });
$('input:checkbox:checked').pluckAttr('data-userid');