2013-08-01 83 views
0

難住了試圖找出什麼是在下面的代碼發生發生......解釋什麼是這個代碼

function updateColourDropdown(url) { 
    $("#selectList").unbind(); 
    $.post(setUniqueParam(url), $("#fruitForm").serialize(), 
      function(data) { 
       if (checkException(data)) { 
        $("#fruitDiv").children().each(function() { 
         removeElem(this); 
        }).end().html(data); 
        $("#selectList").change(function() { 
         updateColourDropdown($("#fruitColourView").val()); 
        }); 
        organiseAllocateTeams(); 
       } 
       data = null; 
      } 
    ); 
    return false; 
} 

基本上不存在包含兩個下拉列表,水果和顏色的形式。如果用戶更改第一個選擇列表中的水果,則會調用服務器來查找可用顏色以填充第二個選擇列表。

我的HTML是使用JSP輸出..

含有水果的列表中選擇列表中的selectList = id

包含選擇列表

的div fruitDiv = id形式的fruitForm = id是環繞我的兩個選擇列表

fruitColourView = id用於鏈接到struts動作的隱藏輸入字段(xml

這是工作代碼。我想在另一個頁面上覆制這段代碼,但是我發現它有點棘手,因爲我不確定它實際上在做什麼,以及爲什麼...從我能告訴'data'變量包含整個代碼我的網頁..

我已經看過了所有的。孩子。每個.END等等等等jQuery的網站,但我不能在邏輯上把它放在一起......

感謝堆,希望我已經足夠清晰。

回答

0
function updateColourDropdown(url) { 
    // Remove handlers on #selectList 
    $("#selectList").unbind(); 

    // Post to URL specified in the parameter, serializing #fruitForm 
    $.post(setUniqueParam(url), $("#fruitForm").serialize(), 

      // Run this on success 
      function(data) { 

       // Assuming `checkException` looks in the returned 
       // data to see if something went wrong. 
       if (checkException(data)) { 

        // Something went wrong; for each of #fruitDiv's children 
        // run the function that removes that child element, then 
        // at the end, put the data, which appears to be HTML, 
        // into #fruitDiv 
        $("#fruitDiv").children().each(function() { 
         removeElem(this); 
        }).end().html(data); 

        // Then set a new `change` event handler on #selectList 
        // that runs `updateColourDropdown, given the value of 
        // #fruitColourView. See Note 1. 
        $("#selectList").change(function() { 
         updateColourDropdown($("#fruitColourView").val()); 
        }); 

        // Then call this. 
        organiseAllocateTeams(); 
       } 

       // Useless. 
       data = null; 
      } 
    ); 


    return false; 
} 

注1:在jQuery中的合理的當前版本的我可能會與使用事件代表團,以避免解除綁定處理程序處理這一/多次重新綁定。

這個問題與Struts無關,而且沒有太多的事情要做,因此特別難以推理。