jquery - 显示选择选项的错误

时间:2011-01-18 15:52:04

标签: jquery

我有多个选择菜单,模式是:

<select name='device$num' id='device$num' size='8' multiple='multiple' >"

我想在任何一个选择更改时显示值。

我试过这个,但有时我会从警报中获得未定义的值。怎么了?

<script>
    \$("select[id^=device]").change(function () {
        \$("#paramselection").html(" ");
        \$("#voltageselection").html(" ");

        // IF THE DATA HAS CHANGED, FIND OUT WHICH DATA SECTIONS ARE STILL VALID

        \$("select[id^=device] :selected").val(function(index, value) {
            alert(value);
        });
    });
</script>

另一个问题,我如何模式匹配,以便id ^ = device \ d +?对不起,我对perl更熟悉

2 个答案:

答案 0 :(得分:1)

将警报更改为此选项以获取所选文本:

\$("select[id^='device'] option:selected").each(function() {
     alert($(this).text());
  });

答案 1 :(得分:1)

为了避免冗余DOM选择,请缓存device元素,并使用它来获取所有元素的选定值

devices集中,使用find()(docs)selected-selector(docs)来获取所选的<option>元素。

然后使用map()(docs)创建一个包含值的jQuery对象,然后get()(docs)从对象中检索Array。

  // cache all the "device" elements as you assign the "change" handler
var devices = $("select[id^=device]").change(function () {
    $("#paramselection").html(" ");
    $("#voltageselection").html(" ");

         // from the "devices" variable, find selected options, and
         //    create an Array of the values
    var selected = devices.find('option:selected')
                          .map(function(){
                              return this.value;
                          }).get();

    alert( selected ); // will alert an array of the selected values
});