如何使用Jquery迭代选择器的选项

时间:2016-06-30 00:54:29

标签: javascript jquery

我有一个非常大的项目,并将我的选择器缩小到:

//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”

我需要获取值和字符串(因为它们有时会不同)。如果我能做到这一点,我相信将每组数据放入一个二维数组应该很容易。

我已经尝试过阅读有关此问题的其他问题,但是一旦您找到了想要迭代的元素,就没有任何解释如何使用。

2 个答案:

答案 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
});