Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 仅从更多元素中获取唯一名称_Jquery_Button_Css Selectors_Radio - Fatal编程技术网

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

Jquery 仅从更多元素中获取唯一名称,jquery,button,css-selectors,radio,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" /> <inp

我动态呈现了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有一种更优雅的方式来实现这一点?

FYI-您发布的html没有唯一的名称。每个都有两个。。。但这就是你如何获得它们的方法:

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

var arr = [];

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

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

});

alert(arr); // 721,722,723
var arr=[];
$.each($('input:radio'),function(){
var myname=this.name;
如果($.inArray(myname,arr)<0){
arr.push(我的名字);
}
});
警报(arr);//721,722,723

如果您想
在每个
收音机前打印这些姓名
,请使用它:

$('input[type="radio"]').each(function() {
    $(this).before($(this).attr('name'));
});​
试一试小提琴:


要获得唯一的名称,可以使用构建所有名称的数组,然后与组合以删除重复的名称

比如:

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

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

只需尝试循环通过并获取所有名称并将其存储在数组中。。。然后,通过使用筛选方法,您可以筛选唯一的值

比方说

var array=[your array values];

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

这可能有用…

我想你们这些人都很快就爱上了jQuery,嗯。 如果有两个单选按钮, 看看这个

$(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”)并检查数组是否具有名称的值。;)

如果他需要唯一的名称,我想他可以只取value属性并将其附加到name属性。谢谢-当然这将允许我执行循环方式,但我真的在寻找一个选择器,它将为我提供所有收音机的名称。使用上面的循环是不自然的,因为我必须获得每个名称,看看它是否已经存在,然后(如果不存在)添加它。这非常接近,所以我将把它标记为答案。我不得不使用$.inArray(),因为IE8不支持arr.indexOf()。谢谢
$(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);
});​