Если после имитирования клика алертом - отрабатывает нормально, то скорее всего без него не работает потому что не успевает создаться весь DOM элементов.
попытайтесь поиграться в сторону задержки исполнения функции через setTimeout(function(){}, 100); время таймаута по желанию. В принципе 100 мс для пользователя вообще не заметно.
это немного костыль, но если с таймаутом отработает тоже нормально, как и с алертом будете знать хоть в какую сторону копать.
например, попробуйте так:
setTimeout(function(){
$("#"+arr[i++]).children("span").click(); //отмечаем позицию
}, 200);