2013-08-01 6 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 из списка выбора, содержащего список фруктов,

fruitForm = id формы, содержащей выберите списки

fruitDiv = id из DIV, который оборачивается вокруг мои два списка выбора

fruitColourView = id скрытого поля ввода, используемого для ссылки на действие стоек (xml)

Это рабочий код. Я пытаюсь воспроизвести этот код на другой странице, однако мне кажется, что это немного сложно, поскольку я не уверен, что он на самом деле делает, и почему ... Из того, что я могу сказать, переменная «data» содержит весь код для моей страницы ..

Я посмотрел все .children .each .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 я бы, вероятно, справиться с этим с обработчиком, который использует делегирование событий, чтобы избежать необходимости отвязать/перепривязывают неоднократно.

Вопрос не имеет ничего общего с Струтами, и не так уж много происходит, о чем особенно сложно рассуждать.

Смежные вопросы