4

データベース内のいくつかのIDを表す名前のラジオボタンの数が不明なリストを含むHTMLを動的にレンダリングしました。

ラジオの一意の名前をすべて収集する必要があります。

次に例を示します。

<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がこれを行うためのよりエレガントな方法を持っていることを望んでいますか?

4

9 に答える 9

6

jsBinデモ

var arr = [];

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

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

});

alert(arr); // 721,722,723
于 2013-01-01T18:04:31.383 に答える
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/

于 2013-01-01T18:08:18.803 に答える
1

一意の名前を取得するには、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;
});
于 2013-01-01T18:08:32.287 に答える
0
$('input:radio').each(function(){
    // do something
 });
于 2013-01-01T18:02:10.090 に答える
0

参考までに-あなたが投稿したhtmlには一意の名前がありません。それぞれ2つあります...しかし、これはあなたがそれらを得ることができる方法です:

$('input[type="radio"]').each(function() {
    alert($(this).attr('name'));
});​
于 2013-01-01T18:03:09.837 に答える
0

print those namesそれぞれの前にしたい場合はradio、それを使用してください:

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

フィドルを試してみてください:http://jsfiddle.net/teLjg/

于 2013-01-01T18:07:29.683 に答える
0

ループスルーしてすべての名前を取得し、それを配列に格納してみてください...次に、filterメソッドを使用して、一意の値をフィルター処理できます...。

たとえば、

var array=[your array values];

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

これはうまくいくかもしれません...

于 2013-01-01T18:12:45.343 に答える
0

まず、無線アイテムのノードリストを取得します。

const radios = document.querySelectorAll("input[type="radio"])

次に、名前の配列を取得し、それらからセットを作成します。定義によるセットには、一意のエントリのみが含まれます。

const nameSet = new Set(Array.from(radios).map( el => el.name))
于 2021-09-02T20:17:50.417 に答える
-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")に乗って、名前の値があるかどうか配列を確認することもできます。;)

于 2013-01-01T18:31:55.277 に答える