alert($("div#" + thisColID + ":first-child").attr('id'));
Замените на:
alert($("div#" + thisColID + " div:first-child").attr('id'));
Или просто добавьте пробел перед :first-child.
Почему?
Псевдокласс :first-child указывает на первый дочерний элемент
указанного вида.
Вот что у вас получается: div#someid:first-child.
Что должно быть: div#someid :first-child
По видимому, в "неправильном" селекторе "div#someid:first-child" сначала ищется div:first-child, а потом уже результат фильтруется по id. Т.к. первый div - это column0, то div:first-child всегда выбирает его.
В первом случае все работает, поскольку первый элемент имеет id="column0". У остальных элементов id другие, поэтому они не проходят дополнительную фильтрацию.