我有一个非常大的项目,并将我的选择器缩小到:
//The $component is found from various other vars using .find to this point
var $selector = $Component.find('[class="multiselect-container"]');
我正在尝试使用.each函数迭代所有值及其字符串。我在过去一小时左右尝试了一些不同的事情但无济于事。
选择器有多个<li class="option">
标记
并且每个选项都包含<a href="javascript:void(0);">
,其中包含<label class="radio checkbox-label">
,其中包含<input type="radio" value="10">
和“10”
我需要获取值和字符串(因为它们有时会不同)。如果我能做到这一点,我相信将每组数据放入一个二维数组应该很容易。
我已经尝试过阅读有关此问题的其他问题,但是一旦您找到了想要迭代的元素,就没有任何解释如何使用。
答案 0 :(得分:3)
这样的事情似乎应该有效:
var array = [];
$selector.find("label.radio").each(function() {
var value = $(this).find("input:radio").val();
var string = $(this).text();
array.push({ string: string, value: value });
});
顺便说一句,不要在选择器中使用[class=classname]
,请使用.classname
。如果元素有多个类而你只想匹配其中一个类,那么你的选择器将不起作用,它将尝试按字面意思匹配整个class
属性。
答案 1 :(得分:0)
1,因为你有类名,所以请用$(&#34; .multiselect-container&#34;)来查询。
您可以从子dom元素中检索值。只需抓住innerText或标签文本。
$Component.find('.multiselect-container').each(function(){
var value = $("input", this).val();
var label = $("label", this).text();
var text = input.innerText;
// text and label might be the same value
});
或者您可以将其过滤到选中的单选按钮
$Component.find('.multiselect-container input[type=radio]:checked').each(function(){
var value = this.value;
var label = $(this).closest("label").text();
// var li = $(this).closest("li")
// same as above
});