2016-06-30 57 views
0

迭代我有一個非常大的項目,我的選擇已經縮小到:如何通過選擇的選項與jQuery

//The $component is found from various other vars using .find to this point 
var $selector = $Component.find('[class="multiselect-container"]'); 

,我嘗試使用。每個函數通過所有的迭代值和他們的字符串。我在過去的一個小時左右嘗試了幾個不同的東西,但無濟於事。

選擇具有多個<li class="option">標籤

每個選項包含<a href="javascript:void(0);">持有<label class="radio checkbox-label">持有<input type="radio" value="10">和「10」

我需要得到的價值和字符串(因爲他們有時不同) 。如果我能做到這一點,我相信將每組數據放入一個二維數組應該很容易。

我已經嘗試閱讀關於此的其他問題,但沒有解釋如何使用.each一旦你已經找到了你想要迭代的元素。

+2

這將是更好地展示你的HTML,而不是試圖去描述它的話。 – Barmar

+1

您還應該顯示您嘗試的代碼,而不只是說「我正在嘗試使用.each功能」。我們如何解釋你做錯了什麼,如果你不顯示你的代碼,那麼你從錯誤中學習? – Barmar

回答

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屬性。

+0

感謝您的幫助。這正是我正在尋找的。希望這會幫助有人遇到類似的問題。 – user3376703

+0

您應該如上所述澄清問題,以便他們知道他們的設置是否有問題。 – Barmar

0

1,由於您有類名,請使用$(「。multiselect-container」)查詢。

您可以檢索子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 
});