3

私は次のHTMLを持っています:

ラジオボタンリスト:

<input name="rdLst163" class="required_Mandatory_RbtLst" id="rdLst163_1" onclick="fn("1631");" type="radio" value="1"/>
<input name="rdLst163" class="required_Mandatory_RbtLst" id="rdLst163_2" onclick="fn("1632");" type="radio" value="2"/>
<input name="rdLst163" class="required_Mandatory_RbtLst" id="rdLst163_3" onclick="fn("1633");" type="radio" value="3"/>

<input name="rdLst164" class="required_Mandatory_RbtLst" id="rdLst164_1" onclick="fn("1641");" type="radio" value="1"/>
<input name="rdLst164" class="required_Mandatory_RbtLst" id="rdLst164_2" onclick="fn("1642");" type="radio" value="2"/>
<input name="rdLst164" class="required_Mandatory_RbtLst" id="rdLst164_3" onclick="fn("1643");" type="radio" value="3"/>

チェックボックスリスト:

<input name="chLst165" class="required_Mandatory_ChkLst" id="chkLst165_1" onclick="fn("25");" type="checkbox" value="1"/>
<input name="chLst165" class="required_Mandatory_ChkLst" id="chkLst165_2" onclick="fn("25");" type="checkbox" value="2"/>
<input name="chLst165" class="required_Mandatory_ChkLst" id="chkLst165_3" onclick="fn("25");" type="checkbox" value="3"/>

<input name="chLst166" class="required_Mandatory_ChkLst" id="chkLst166_1" onclick="fn("25");" type="checkbox" value="1"/>
<input name="chLst166" class="required_Mandatory_ChkLst" id="chkLst166_2" onclick="fn("25");" type="checkbox" value="2"/>
<input name="chLst166" class="required_Mandatory_ChkLst" id="chkLst166_3" onclick="fn("25");" type="checkbox" value="3"/>

および次のjQuery:

<script>
$(document).ready(function () {
  $('.required_Mandatory_ChkLst[name!=]'); 
  $('.required_Mandatory_RbtLst[name!=]');
// result is fetching all 6 elements. I need only distinct element names [here 2 elements] in each class.
});
</script>

jQueryでクラスの個別の要素名を取得するにはどうすればよいですか?

必要な結果:

["rdLst163", "rdLst164"]  
["chLst165", "chLst166"]
4

6 に答える 6

5
var cbnames = [];
$('.required_Mandatory_ChkLst[name!=]').map(function() {
    return this.name;
}).each(function(i, str) {
    if (!~$.inArray(str, cbnames)) cbnames.push(str);
});
console.log(cbnames); //["chLst165", "chLst166"]

フィドル

簡単に言うと、このソリューションは要素の名前を jQuery オブジェクトでラップされた配列にマップし、それを反復処理して、一意の値を配列にプッシュします。


マッピングは必ずしも必要ではないため、簡単にするために、そのステップをスキップして行うこともできます。

var cbnames = [];
$('.required_Mandatory_ChkLst[name!=]').each(function() {
    if (!~$.inArray(this.name, cbnames)) cbnames.push(this.name);
});
console.log(cbnames); //["chLst165", "chLst166"]

フィドル

于 2012-10-30T10:32:16.430 に答える
2

あなたが欲しいのはこれだと思います

var mapped = $('.required_Mandatory_ChkLst[name!=], .required_Mandatory_RbtLst[name!=]').map(function() {
    return $(this).attr('name');
});

var unique = mapped.filter(function (i, itm) {
    return i == $.makeArray(mapped).indexOf(itm);
});

console.log(unique);

まず、dom要素のコレクションを、その要素の名前を持つ文字列値のコレクションにマップします。次に、この名前のコレクションをフィルタリングして、一意のインスタンスのみを含めます。

注:他の回答は、jQuery.uniqueの使用を示唆しています。ただし、この方法はdom要素のコレクションで機能し、あなたの場合、これらはすべて一意です。

于 2012-10-30T10:44:36.843 に答える
2

次のようなことができます:

デモ: http://jsfiddle.net/DvegQ/

コード:

var classNames = [];
$('*').each(function() { classNames[$(this).attr('name')] = 1; });
for(var x in classNames) { console.log(x); }
于 2012-10-30T10:15:49.350 に答える
1

に似ていfilter()ます:

$(function(){
    var names = [];
    $('.required_Mandatory_RbtLst').each(function(){

        if($.inArray($(this).prop('name'), names) === -1)
            names.push($(this).prop('name'));
    });

    console.log($(names));
});​
于 2012-10-30T10:39:59.247 に答える
0

これを試して

var names = $("input").map(function(){ return $(this).attr('name'); });
var distinctNames = $.unique(names);

マップ機能の詳細については、http://jqapi.com/#p=mapをご覧ください。

于 2012-10-30T10:17:39.553 に答える
0

jQuery.unique()メソッドを使用できます。

jQuery.unique($('.required_Mandatory_RbtLst[name!=]'));

参照: http://api.jquery.com/jQuery.unique/

于 2012-10-30T10:16:18.547 に答える