список изменений, измененный на лету, не запускает onChange () для нового первого элемента - PullRequest
1 голос
/ 25 апреля 2010

В приведенном ниже коде я использую 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>

Ответы [ 3 ]

2 голосов
/ 25 апреля 2010

Поскольку New1 выбран по умолчанию. Если вы выбрали выбранную опцию, которая не квалифицируется как изменение.

0 голосов
/ 25 апреля 2010

на событии 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"));
......
0 голосов
/ 25 апреля 2010

Попробуйте это:

   $("#dropdown").live('change',function() {
      alert($(this).val());
   });     
...