在下面的代码中,我使用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>
答案 0 :(得分:2)
因为默认情况下选择了New1。如果您选择的选项不符合更改条件。
答案 1 :(得分:0)
试试这个:
$("#dropdown").live('change',function() {
alert($(this).val());
});
答案 2 :(得分: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"));
......