从更多元素中获取唯一的名称

时间:2013-01-01 17:56:57

标签: jquery button css-selectors radio

我已动态呈现HTML,其中列出了数量不确定的单选按钮,其名称代表数据库中的某些ID。

我需要收集无线电的所有唯一名称。

以下是一个例子:

<input name="721" type="radio" value="A" />        
<input name="721" type="radio" value="I" />     

<input name="722" type="radio" value="A" />        
<input name="722" type="radio" value="I" />     

<input name="723" type="radio" value="A" />        
<input name="723" type="radio" value="I" />     

不需要检查无线电,因此使用选定或选中的属性将不起作用。

有没有一种优雅的方法可以使用jQuery获取无线电的所有独特名称? 我知道我可以遍历每个无线电,但我希望jQuery有更优雅的方式来做这个吗?

8 个答案:

答案 0 :(得分:6)

<强> jsBin demo

var arr = [];

$.each( $('input:radio'), function(){

  var myname= this.name;
  if( $.inArray( myname, arr ) < 0 ){
     arr.push(myname); 
  }

});

alert(arr); // 721,722,723

答案 1 :(得分:1)

var names = $('input[type=radio]').map(function() {
    return this.name
}).get(); // create an array of names

var unique = $.grep(names, function(v, i) {
    return $.inArray(v, names) === i
}); // filter unique values

http://jsfiddle.net/WnHvz/

答案 2 :(得分:0)

$('input:radio').each(function(){
    // do something
 });

答案 3 :(得分:0)

仅供参考 - 您发布的HTML没有唯一的名称。每个都有两个......但这就是你如何得到它们的:

$('input[type="radio"]').each(function() {
    alert($(this).attr('name'));
});​

答案 4 :(得分:0)

如果您想在每个print those names之前radio,请使用它:

$('input[type="radio"]').each(function() {
    $(this).before($(this).attr('name'));
});​

尝试小提琴:http://jsfiddle.net/teLjg/

答案 5 :(得分:0)

要获取唯一名称,您可以使用map()构建所有名称的数组,然后将$.grep()$.inArray()结合使用以删除重复名称。

类似的东西:

var allNames = $("input[type=radio]").map(function() {
    return $(this).attr("name");
}).get();

var uniqueNames = $.grep(allNames, function(name, index) {
    return $.inArray(name, allNames) == index;
});

答案 6 :(得分:0)

尝试循环获取所有名称并将其存储在数组中...然后使用过滤方法可以过滤唯一值....

让我们说,

var array=[your array values];

var unique_val = array.filter(function(value,iter,array){
    return iter == array.indexOf(value);
});

这可能有用......

答案 7 :(得分:-1)

我觉得你们这么快就喜欢jQuery,呵呵。 如果有2个单选按钮,这可能对你有帮助, http://jsfiddle.net/BTcrR/检查一下

$(function() {
    // list of 
    var rediobuttonsName = new Array();
    // you can use :odd | :even
    $('input[type="radio"]').not(':odd').map(function(n, elem) {

       rediobuttonsName.push(elem.name);
       // or  you can use the context of object this
       // this.name

   });

   alert(rediobuttonsName);
});​

或者你可以骑.not(“:odd”)并检查数组是否有名称的值。 ;)