2016-02-11 79 views
0

我有我加入動態使用從一個變量叫「結果」數據選項中選擇元素:添加「選擇」屬性爲用戶選擇的選項「改變」後與jQuery

HTML:

<select id="categories"> 
    <option selected disabled>Select your category</option> 
</select> 

的jQuery:

$.each(results.Subcategories, function(index,category) { 
    var category = '<option value="'+category.Name+'" data-index="'+index+'">'+category.Name+'</option>'; 
    $('#categories').append(category); 
}); 

這正常工作,我能夠在選擇元素的動態添加選項之間做出選擇。

我現在需要做的是獲取當前選擇的AFTER的'value'屬性,用戶從添加的選項中選擇它。這是我陷入困境的地方。我認爲,像這樣的工作:

$('#categories').on('change', function() { 
    var optionSelected = $("#categories option:selected", this); 
    console.log($(optionSelected).data("value")) 
}); 

但是,當我選擇一個新的選擇的屬性不會在移動選項,所以我無法定位到該屬性來獲取值。

假設上面的方法是穩定的,如何讓我的新選擇的選項具有選定的屬性,以便我可以將其定位並獲取值?還是有更好的方法,我錯過了?提前致謝。

+0

只需做$(this).val()或this.value即可獲得選定的值。 – DinoMyte

+0

@DinoMyte - 但是我怎麼知道'this'對於新選擇的選項是什麼,沒有'selected'屬性呢? – SilentDesigns

+2

'selected'屬性指定在選擇元素加載時應該預先選擇哪個選項。你是否試圖從外部事件插入選項並讓它在選擇元素中顯示選中? – DinoMyte

回答

1

所選屬性將從加載中選擇一個選項。你需要的是this.val(),或者你可以使用普通的javascript,並使用getElementById(你的選項元素的id).value(),並獲得該值。

+1

謝謝,是的,我誤解了所選attr的使用。您的解決方案正確。 – SilentDesigns

+0

這是this.value,不是this.val() – DinoMyte

+0

您可以同時使用這兩個。在jQuery中它是$(this).val(),當使用純JavaScript時,你可以使用.value()他的問題標籤jQuery。我只是給了他使用的選項。 – Niall