2012-04-18 3 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

관련 문제