Я думаю, что это должно сработать.
$overlay.find('> .container .content .selector:visible:not(:odd:odd)').addClass('hasRightMargin');
$overlay.find('> .container .content .selector:visible:gt(3)').addClass('hasTopMargin');
Ваша основная проблема заключается в том, что n-й дочерний элемент выбирает все элементы, являющиеся n-ным дочерним элементом их родительского элемента, , а не n-ых элементов в наборе. Также имейте в виду, что селекторы, такие как: odd,: even,: gt,: lt, имеют индекс 0. Итак: нечетно выделяются элементы 1,3,5 и т. Д. 2-й, 4-й, 6-й элементы на странице. И: odd: odd выбирает каждый 4-й элемент на странице. Аналогично,: gt (3) выбирает все элементы с индексом 4 или более, который является 5-м элементом и более.
Смотрите здесь для jsfiddle, который, я думаю, демонстрирует то, что вы искали. Обратите внимание на скрытые элементы div, которые были переданы.