innerHtml - это свойство DOM-элементов, а не метод jQuery-объектов. Вместо этого используйте html () .
Edit:
По поводу комментария:
$new_element = $('li').attr('id', refId);
Это не создает новый <li>
-элемент, оно берет существующие <li>
-элементы внутри документа.
Чтобы создать новый элемент в jQuery, используйте
$new_element = $('<li/>').attr('id', refId);
Здесь то же самое:
var $link = $('a')
... должно быть
var $link = $('<a/>')
Не смешивайте jQuery и Javascript (DOM)
Это путь Javascript (DOM) для создания элемента:
var $new_element = document.createElement('li');
jQuery ожидает разметку для $()
, в то время как DOM-метод createElement()
ожидает tagName в качестве параметра.