У вас небольшой баг: при добавлении вложенного списка, выбирается первый пункт, и если он не пустой (имеет items), то его вложенный список не добавляется.
Ну и на самом деле решение мудреное. На нашем фреймворке мы бы сделали так: jsfiddle.net/WZbTH/ (к сожалению там проблема с кроссдоменными запросами, потому на jsfiddle код не работает :( но суть что это делается проще)
Отображение зависимых данных на примере каскадных выпадающих списков