2016-02-11 51 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