考虑到以下情况:

<select id="location">
    <option value="a" myTag="123">My option</option>
    <option value="b" myTag="456">My other option</option>
</select>

<input type="hidden" id="setMyTag" />

<script>
    $(function() {
        $("#location").change(function(){
            var element = $(this);
            var myTag = element.attr("myTag");

            $('#setMyTag').val(myTag);
        });
    });
</script>

这行不通…… 我需要做什么来让隐藏字段的值更新到myTag的值时,选择被改变。我假设我需要做一些关于获得当前选择的值…?


当前回答

将事件处理程序添加到<select>元素。 因此,$(this)将是下拉列表本身,而不是所选的<选项>。

你需要找到选中的<选项>,就像这样:

var option = $('option:selected', this).attr('mytag');

其他回答

您也可以使用data-myTag尝试这个方法

<select id="location">
    <option value="a" data-myTag="123">My option</option>
    <option value="b" data-myTag="456">My other option</option>
</select>

<input type="hidden" id="setMyTag" />

<script>
    $(function() {
        $("#location").change(function(){
           var myTag = $('option:selected', this).data("myTag");

           $('#setMyTag').val(myTag);
        });
    });
</script>

最简单的,

$('#location').find('option:selected').attr('myTag');

直接的方法是:

获取所选选项属性值:

var selectedOptionAttributeValue =   $('#location option:selected').attr('myTag');

获取选定文本:

 var selectedOptionText = $('#location').text();

获取所选值:

var selectedOptionValue = $('#location').val();

试试这个:

$(function() { 
    $("#location").change(function(){ 
        var element = $(this).find('option:selected'); 
        var myTag = element.attr("myTag"); 

        $('#setMyTag').val(myTag); 
    }); 
}); 

将事件处理程序添加到<select>元素。 因此,$(this)将是下拉列表本身,而不是所选的<选项>。

你需要找到选中的<选项>,就像这样:

var option = $('option:selected', this).attr('mytag');