Все же очевидно вы пытаетесь повесить обработчик на те элементы которые еще не созданы.
$('.add-cut').on('click', '.add, .cut', function ( e ) {
if ( $( e.target ).hasClass('add') ) {
$('.li').after('<ul class="l2"><li class="it1">Название</li><li class="item it2">Цена</li></ul>');
$('.add-cut').html('<button class="cut">Удалить</button>');
} else {
$('.add-cut').html('<button class="add">Добавить</button>');
}
});
Или так.
$('.add-cut').on('click', '.add, .cut', function ( e ) {
var targetClass = e.target.className;
$( e.target )
.addClass( targetClass == 'add' ? 'cut' : 'add' )
.text( targetClass == 'add' ? 'Удалить' : 'Добавить' )
.removeClass( targetClass )
.hasClass('add') &&
$('.li').after('<ul class="l2"><li class="it1">Название</li><li class="item it2">Цена</li></ul>');
});