2012-04-18 14 views
0

jQuery Ajaxを使用してドロップダウンリストにカテゴリを追加しようとしています。オプションを選択すると、サブカテゴリをロードします。

私が直面している問題は、Ajax関数によるドロップダウンリストにオプションを追加すると、変更イベントもトリガーされるように見えるということです。この問題を回避するには、これを避けたり、コードを書き直したりするにはどうすればよいですか? fillDropDownため

categoryHelper.loadLevel1 = function() { 

    // The control that needs to be filled with categories 
    var $control = $("#select1"); 

    // This function runs $.getJSON() and fills the drop down list 
    // with option elements 
    fillDropDown(url, null, $control); 

    // When I select a value I want to run the function loadLevel2 which 
    // takes the currently selected value from level 1 as parameter 
    $control.change(categoryHelper.loadLevel2($control.val())); 
}; 

コード::すべてのヘルプは高く評価され

function fillDropDown(url, parameters, dropdown) { 
///  all data has been loaded</param> 
    $.getJSON(url, parameters, function (data) { 
     $(dropdown).empty(); 
     $(dropdown).append(createOption("", "")); 
     $(data).each(function() { 
      $(dropdown).append(createOption(this.value, this.text)); 
     }); 
    }); 
} 

は、ここに私のコードです!

答えて

2

このライン:

$control.change(categoryHelper.loadLevel2($control.val())); 

.change()categoryHelper.loadLevel2($control.val())を呼び出した結果を渡します。それが関数でない場合は、要素にイベントハンドラを追加するのではなく、すでにバインドされているイベントハンドラをトリガすることになります。あなたが実際に.change()に関数を渡しているように、

$control.change(function() {categoryHelper.loadLevel2($control.val())}); 

、それが動作するはずです:に変更します。

+0

ありがとう、それが問題を解決しました。 :-) – Aetherix

関連する問題