2014-02-27 43 views
-1

我对使用jQuery或JavaScript方法的复选框的最佳做法感到好奇。想象一下,在表单里面有一堆复选框,每行有1个复选框(值是唯一的),点击其中的2个并简单地在数组中使用这些值...哪种方法可以获取选中的复选框的值?

问题是与教育动机,而不是真的一个问题,我曾与一个项目,做了一个非常大的代码复选框工作,

HTML:

<input class="checkbox" type="checkbox" id="1" name="group" onclick="agregarDel("1")"/> 

的JavaScript:

function agregarDel(id) 
{ 
    if(document.getElementById(id).checked) 
    { 
      eliminar.push(document.getElementById(id).name); 
    }else{ 
      var aux = eliminar.indexOf(document.getElementById(id).name); 
      if(aux !== -1) eliminar.splice(aux, 1); 
    } 
} 

的代码博夫只是我在想什么的一个不好的例子。这个想法是找到最好和更有效的方式来获得检查项目的数值ARRAY。

+2

这是一个非常模糊的问题... –

+1

有没有某个问题你担心?或者只是普遍担心? –

+2

_这是最好的方法。那么你知道什么方式? – putvande

回答

1

如果你所要求的做到这一点的最好办法,回答的唯一途径是通过做一些基准测试...

我编写了3种不同的方法和测量他们把解决问题的时间。

方法1

使用jQuery找到复选框,然后.prop( '检查')来过滤时选中

时间:51ms

方法2

使用jQuery来查找在选择器内过滤的复选框$('input:checked')

时间:14MS

方法3

没有jQuery的

时间:7毫秒

下面的代码,如果你想测试一下:http://jsfiddle.net/KcBEj/8/

// 
// method 1 
// 

hola = []; 
$('input').each(function(i,el){ 
    if($(el).prop('checked')){ 
     hola.push($(el).val()); 
    } 
}); 

// 
// method 2 
// 

hola = []; 
$('input:checked').each(function(i,el){ 
    hola.push($(el).val()); 
}); 

// 
// method 3 
// 

hola = []; 
elems = document.getElementsByTagName('input'); 
for(i=0,n=elems.length;i<n;i++){ 
    if(elems[i].getAttribute('checked') == 'checked') { 
     hola.push(elems[i].getAttribute('value')); 
    } 
}