jQuery $ .attr()问题与select(下拉菜单)

时间:2013-09-29 01:01:52

标签: javascript jquery html5 custom-data-attribute

看起来很简单,但它不起作用。

我正在尝试从动态生成的<option>中获取一些自定义数据属性。

选项正确生成且语法正确:

<option value="xml/airports/africa.xml" data-pos="5" data-airport="Noumérat - Moufdi Zakaria Airport">Noumérat - Moufdi Zakaria Airport</option>

但是,当我尝试控制记录这些值时,我不断获得undefined

它的脚本看似简单而简短:

$(document).ready(function() {
    var sel = $('select');  //its the only select on the page
sel.change(function() {
            //some variations I have tried:
          var n = sel.attr('data-airport');
          var f = sel.val());         //****this is pulling fine
          var i = sel.attr('data-pos');
          console.log(n, i);
          console.log(sel.attr('data-pos');
          console.log($(this).attr('data-pos');
          console.log($('select').attr('data-pos');
})
})

我已经完成了强制性的谷歌搜索无济于事......有什么好主意吗?

1 个答案:

答案 0 :(得分:2)

属性分配给option元素而不是select元素。在您的情况下,您尝试从select元素sel获取属性值。

相反,您需要从select元素中找到所选的选项。

应该是

var opt = sel.find('option:selected')

var i = opt.attr('data-pos');
console.log(opt.data('pos');
console.log(opt.attr('data-pos');