1

以下のコードでは、jquery 1.4.1を使用して、ユーザーがリストをクリックしたときに選択リストのオプションを変更しています(1つの古いアイテムを3つの新しいアイテムに置き換えています)。New2またはNew3のいずれかを選択すると、change()メソッドが正しく起動します(アラートが表示されます)が、「New1」を選択しても起動しません。私は何が欠けていますか?ありがとう。

<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 に答える