1

在下面的代码中,当用户单击列表时,我使用 jquery 1.4.1 修改选择列表中的选项(用三个新项目替换单个旧项目)。正确选择 New 2 或 New 3 会触发 change() 方法(并显示警报),但选择“New 1”不会。我错过了什么?谢谢。

<html>
<head>
<script type="text/javascript" src="js/jquery-1.4.1.min.js"></script>
<script>
$(document).ready(function() {
   $("#dropdown").mousedown(function() {
      $(this).empty();
      $(this).append($("<option></option>").attr("value",100).text("New 1")); 
      $(this).append($("<option></option>").attr("value",200).text("New 2"));  
      $(this).append($("<option></option>").attr("value",300).text("New 3"));  
   });        
   $("#dropdown").change(function() {
      alert($(this).val());
   });        
});
</script>
<body>
<select id="dropdown"><option value="1">Old 1</option></select>
4

3 回答 3

2

因为默认选择New1。如果您选择了不符合更改条件的选定选项。

于 2010-04-24T22:11:59.763 回答
0

尝试这个:

   $("#dropdown").live('change',function() {
      alert($(this).val());
   });     
于 2010-04-24T22:10:20.073 回答
0

在 mousedown 事件中,您实际上重新生成了选项,因此第一个孩子被选中。相反,您可以尝试添加空选项作为默认选择,如下所示:

$(this).append($("<option></option>").attr("value",'').text("Select"));
$(this).append($("<option></option>").attr("value",100).text("New 1")); 
$(this).append($("<option></option>").attr("value",200).text("New 2"));
......
于 2010-04-24T22:12:22.060 回答