jquery:在下拉列表中获取自定义属性的值

时间:2013-11-28 12:17:54

标签: javascript jquery

我有一个简单的JQuery代码。

$(document).ready(function() { 
  $( ".translanguage" ).change(function() {
      var value = $(this).attr("langid");
      alert(value);
  });
});

我有html代码。

<select name="translanguage" class="translanguage">
  <option value="0">Please Select Language</option>
  <option class="transoption" value="1" langid="1">Urdu</option>
  <option class="transoption" value="2" langid="2">English</option>
  <option class="transoption" value="3" langid="3">Arabic</option>
  <option class="transoption" value="4" langid="4">Sindhi</option>
</select>

当我运行此程序时,它会在警告框中给出未定义的错误。我需要在我的选项tage中给出的langid值。

那么我的代码中存在什么问题。 ?

其次,JQuery中未定义错误的原因是什么。

由于

4 个答案:

答案 0 :(得分:9)

更改处理程序this内部引用select元素,但langid位于所选的option元素中。因此,您需要找到所选的option,然后在该元素上调用.attr("langid")

jQuery(function () {
    $(".translanguage").change(function () {
        var value = $(this).find('option:selected').attr("langid");
        alert(value);
    });
})

演示:Fiddle

答案 1 :(得分:2)

尝试这样的事情

      $( ".translanguage" ).change(function() {
          alert(this.options[this.selectedIndex].getAttribute('langid'));
      });

答案 2 :(得分:2)

此脚本适合您。 见jsfiddle

$(function () {
    $(".translanguage").change(function () {
        var value = $( "select option:selected" ).attr("langid");
        alert(value);
    });
})

答案 3 :(得分:0)

试试这个:

// jquery wont find the attr of langid, change the langid to id in html.
$(document).ready(function() { 
  $( ".translanguage" ).change(function() {
    var value = $(this).attr("id");
    alert(value);
  });
});