Расширение меню - очень большая тема, с которой можно обращаться множеством способов.В зависимости от ваших потребностей, вам, вероятно, лучше потянуть один с полки, чем свернуть свой собственный (если вы действительно не знаете, что делаете, вам понадобится много времени, чтобы сделать это правильно и сделать его полностью кросс-браузерным),
Вот очень простой пример http://javascriptsource.com/navigation/expanding-menu.html, но есть много других.Просто разверните меню Google javascript.
Кроме того, если вы хотите использовать jQuery (которым я не поклонник, но он идеально подходит для такого рода вещей, если вы не собираетесь его использоватьна сайтах мобильных устройств) взгляните на это: http://www.1stwebdesigner.com/css/36-eye-catching-jquery-navigation-menus/
[Изменить] на основе вашего комментария ...
Не зная специфики того, что вы хотите сделать, ясказал бы, что если у вас есть блоки кода, которые нужно добавлять специально, в зависимости от того, кто-то нажимает на что-то, и вы уверены, что это за блоки кода, самый простой (хотя и не самый элегантный) способ сделать это - сохранитьэти блоки кода в виде строк и добавьте их к innerHTML любого объекта, ожидающего их, на основе нажатия кнопки.
Вы можете сохранить блоки в виде хеш-массива и назначить значение того элемента, который выхотите добавить кнопку к нажатию кнопки.
Более элегантный способ сделать это состоит в том, чтобы создать фактические узлы в xml и установить для их отображения значение "none", чтобы они некак на странице.Затем используйте cloneNode, чтобы сделать их копии, и присоедините их к тому, к чему они принадлежат.
Опять же, трудно дать вам конкретику без конкретной проблемы, но в целом это два пути.