В коде ниже, я использую jQuery 1.4.1 для изменения опций в списке выборки, когда пользователь нажимает на список (заменяющий единственный Старый объект тремя Новыми объектами). При выборе или Новых 2 или Новых 3 правильно огней изменение () метод (и шоу предупреждение), но выборе "Нового 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>
Потому что New1 выбран по умолчанию. Если вы выберете выбранный вариант, который не считается изменением.
при событии 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"));
......
Попробуйте следующее:
$("#dropdown").live('change',function() {
alert($(this).val());
});