jquery对select / option change事件没有反应

时间:2011-12-28 15:18:58

标签: jquery select handler option

有人可以告诉我错误在哪里,我只是看不到它。 当选择更改时,'e1已更改'应记录到控制台。

HTML:

<select name="e1" id="e1">
    <option value="1">1</option>
    <option value="2">2</option>
</select>

JS:

$('#e1').change(function() {
    console.log('e1 has changed');
});

jquery绝对有效,因为我已成功“获取”其他元素的服务器数据。

5 个答案:

答案 0 :(得分:10)

此代码

$('#e1').change(function() {
    console.log('e1 has changed');
});

可能不在您的文档就绪处理程序中,因此在您的dom元素e1准备好之前运行。您可以创建一个文档就绪处理程序,它将在您的dom元素准备就绪时运行,如此

$(function() {
    $('#e1').change(function() {
        console.log('e1 has changed');
    });    
});

答案 1 :(得分:1)

适合我。这是jsFiddle代码 -

http://jsfiddle.net/CC5P6/

$(document).ready(function() {
  $('#e1').change(function() {
    alert('e1 has changed');
  });
});

答案 2 :(得分:1)

我还没有这样做,你应该将代码包装在$(document).ready(

 $(document).ready(function() {
    $('#e1').change(function() {
       console.log('e1 has changed');
    });
 });

答案 3 :(得分:0)

这对我有用:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
    $(function() {
        $('#e1').change(function() {
            console.log('e1 has changed');
        });
    });
</script>

</head>
<body>
<select name="e1" id="e1">
    <option value="1">1</option>
    <option value="2">2</option>
</select>
</body>
</html>

document.ready是其中的关键,正如其他人所指出的那样。

答案 4 :(得分:0)

对于选择菜单,当键盘和鼠标按钮事件和NoScript有效地选择了一个选项时,会发生更改事件。  对于文本字段或文本区域,当字段失去焦点时会发生更改事件。  因此你不能直接使用“改变事件”(没有通过键盘或鼠标选择任何选项)   试试这个鳕鱼:

<select name="subpos" id="subpos">
<option value="examplel">examplel</option>
<option value="sample">sample</option>
<option value="fortest">fortest</option>
</select>


<script>
    $(function() {
        $('#subpos').change(function() {
            console.log('subpos has changed');
        }); 
        $("#subpos").val('sample');//combo box has change but dont appear in console log. why?
   });
</script>
跑完后;看控制台日志  您无法在控制台日志中看到“subpos has changed”。但在行动'subpos已经改变' 发生了什么事? 当选择更改时,应将其记录到控制台。 现在,通过从下拉列表中选择该选项,您可以看到cosole日志已更改