После обновленного вопроса
Единственными решениями являются
$('#page svg:not(:has(svg))');
и ваши
$('#page svg:not(svg svg)');
Производительность (проверить тест ) они примерно одинаковы без явного победителя
оригинальный ответ
Для конкретного примера
$('#page > svg:first')
или
$('#page svg:first')
будет достаточно.
Но рассмотрим следующий случай
<div id="page">
<div>
<p>
<svg id="svg-1"></svg>
</p>
<svg id="svg-2"></svg>
</div>
</div>
Возможен ли этот случай ( оба svgs обернутыв другом )?и если да, то хотите ли вы #svg-2
?
Этот случай вообще не обрабатывается версией >
, а версия $('#page svg:first')
вернет #svg-1