![](/img/trans.png)
[英]Count number of elements with distinct name using jQuery or javascript
[英]Get Distinct name of elements with a class using jquery
我有以下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"]
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"]
您可以執行以下操作:
演示 : http : //jsfiddle.net/DvegQ/
碼:
var classNames = [];
$('*').each(function() { classNames[$(this).attr('name')] = 1; });
for(var x in classNames) { console.log(x); }
我相信你想要的是
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元素的集合,在您的情況下,所有這些都是唯一的。
類似於filter()
:
$(function(){
var names = [];
$('.required_Mandatory_RbtLst').each(function(){
if($.inArray($(this).prop('name'), names) === -1)
names.push($(this).prop('name'));
});
console.log($(names));
});
您可以使用jQuery .unique()
方法,
jQuery.unique($('.required_Mandatory_RbtLst[name!=]'));
嘗試這個
var names = $("input").map(function(){ return $(this).attr('name'); });
var distinctNames = $.unique(names);
在此處閱讀有關map函數的更多信息http://jqapi.com/#p=map
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.