Все сделал сам.
Может кому пригодится - вот решения:
1. что бы сделать заглушку для пустых букв немного изменил код подсчета букв и повесил фейд-ин для нового элемента с классом "blank", а в этот элемент положил свой текст-заглушку.
2. что бы убрать пустые якоря, дописал поиск следующего брата и если его нет, то элемент прячем. вернее, у меня вышло зеркально - я сначала спрятал все якоря, а потом дисплей-блок только для тех у которых есть брат с нужным мне классом.
3. третье решение я описал выше...
Вот что в итоге получилось:
$("a").click(function(){
$(".active-ing").removeClass("active-ing");
$(this).addClass("active-ing");
});
var all_spans = $('.alpha-row .accordion-inner').hide();
$('.alpha-row a').click(function(e){
var thisSpan = $(this).parent().find('.accordion-inner'),
isShowing = thisSpan.is(":visible");
// Hide all spans
all_spans.hide();
// If our span *wasn't* showing, show it
if (!isShowing) {
thisSpan.show();
}
e.preventDefault();
});
var triggers = $('.alphabet-nav a');
var filters = $('.alpha-box ing');
$(".noresult").hide();
triggers.click(function() {
var takeLetter = $(this).text(),
count = 0;
filters.parent().hide();
$(".noresult").hide();
$.each(filters, function(i, item) {
var compareFirstLetter = $(item).text().substr(0, 1);
if (compareFirstLetter == takeLetter) {
$(item).parent().fadeIn(222);
count++;
}
});
if (count === 1) {
$(".noresult").fadeIn(22);
}
});
$(".alpha-box .alpha-row").sort(asc_sort).appendTo('.alpha-box');
//$("#debug").text("Output:");
function asc_sort(a, b){
return ($(b).text()) < ($(a).text()) ? 1 : -1;
}
$(".ing-letter").next('.ing-list').each(function() {
$(this).prev().css({display: 'block'});
});