使用自定义属性jQuery选择器和下拉选择

时间:2013-08-19 06:51:03

标签: javascript jquery forms jquery-selectors

我有一系列用数据库填充的级联下拉菜单。一旦选择了系列中的最后一项,我正试图从我的数据库中的一行中提取数据。我给了行一个自定义属性,但似乎无法从中获取数据。这是我想要完成的一个简单示例。

http://jsfiddle.net/WsrBX/

HTML

<body>
<div id="wrapper">
    <form>
        <div>no id</div>
        <select>
            <option>pick</option>
            <option data-pick="33">with id</option>
        </select>
        <div id="there">has an id</div>
        <div>nope</div>
    </form>
</div>
    <div id="yup"></div><!--value should appear here upon selection-->
</body>

JS

    $('option[data-pick]').on('keyup change', function(){
    var idString = $(this).attr('option[data-pick]');
    $('#yup').text(idString);
    });

3 个答案:

答案 0 :(得分:0)

http://jsfiddle.net/WsrBX/1/

$('select').on('change', function(){
var idString = $(this).find("option:selected").attr('data-pick');
$('#yup').text(idString);
});

答案 1 :(得分:0)

<强> HTML:

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<body>
    <div id="wrapper">
        <form>
            <div>no id</div>
            <select id="sel">
                <option>pick</option>
                <option data-pick="33">with id</option>
            </select>
            <div id="there">has an id</div>
            <div>nope</div>
        </form>
    </div>
    <div id="yup"></div>
    <!--value should appear here upon selection-->
</body>

<强> JS:

$('#sel').on('keyup change', function () {
    var idString = $('option:selected', this).attr('data-pick');
    $('#yup').text(idString);
});

Working Demo

答案 2 :(得分:0)

一些提示:

  1. change事件仅发生在<select>,您无法在<option>上捕获。
  2. keyup事件字面意思是指键盘的键,可能不是您想要的。
  3. 正确的解决方案应该是在change上监听<select>,并使用<option>selectedIndex DOM元素找到相应的<select>。示例如下:

    $('select').on('change', function(){
        var idString = this.options[this.selectedIndex].getAttribute('data-pick');
        $('#yup').text(idString);
    });