Jquery .change函数没有触发

时间:2011-11-29 20:42:18

标签: jquery

我只是想知道为什么这个脚本不起作用?我试图在SELECT MULTIPLE中获取所选(一个或多个项目)选项的值。缺少什么?

由于

<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script>

$('#ooo').change(function() {
    var foo = []; 

    $('#ooo :selected').each(function(i, selected){         
      foo += $(selected).valueOf(); 
    });

    alert(foo);
    //$("#test").text(str);
});

</script>
</head>
<body>
<select name="test" id="ooo" multiple="multiple">
    <option value="1">test</option>
    <option value="2">bbbb</option>
    <option value="3">aaaa</option>
    <option value="4">xxx</option>
    <option value="5">zzz</option>
</select>

3 个答案:

答案 0 :(得分:2)

您需要将代码包装在$(document).ready()中。在将更改处理程序绑定到元素之前,jQuery ready()处理程序将等待unitl加载文档元素。同样,使用select multiple它将返回一个选定项目的数组。因此,您需要在select元素的val()上运行.each()。

$(document).ready( function () {
  $('#ooo').change(function() {
      var foo = 0;

      $.each($('#ooo').val(), function(i, selected) {         
        foo += parseInt(selected, 10);
      });

      alert(foo);
      //$("#test").text(str);
  });
});

答案 1 :(得分:0)

请确保使用$(document).ready(),因为您的脚本位于选择框之前。另外,请确保指定脚本类型<script type="javascript">,某些浏览器在未正确识别类型时不喜欢它。

答案 2 :(得分:0)

你可以这样做 -

$(document).ready( function () {
    $('#ooo').change(function() {
        alert($('#ooo').val());
    });
})

jQuery val函数将在多个选择框中自动返回逗号分隔的选定值元素字符串。您应该将$(document).ready函数添加到代码中,以确保click事件可以成功绑定。

演示 - http://jsfiddle.net/pNUQm/