Окончательное решение
Этот ответ был полностью отредактирован для обновления. Окончательное решение - это, в основном, селектор, в котором, начиная с идентификатора исходного элемента <ul>
, выбираются все якоря в элементах списка, которые не нарушают структуру структуры меню. То есть, если есть элемент, отличный от <ul>
или <li>
, вложенный в него, не выбирайте ничего внутри этих элементов, даже если в нем есть меню.
Результирующий селектор (#root
- это идентификатор основного <ul>
):
$('#root > li > a, #root ul:not(#root :not(ul,li) ul) > li > a')
Вы можете попробовать демо здесь: http://jsfiddle.net/9gPzQ/31/
Однако оригинальный постер @ salmane хотел сделать это для плагина, который уже поставляется с переданным элементом, поэтому он придумал следующий код, чтобы сделать то же самое, что и выше, но уже внутри выбранные объекты передаются как контекст селектора:
$('li >a',this.content).not($(':not(ul,li) a',this.content))
Другие интересные селекторы
На пути к поиску решения появились некоторые интересные селекторы из-за моего неправильного понимания проблемы, но я все равно включу их сюда просто для справки, для некоторых это может пригодиться. :)
Этот селектор выбирает привязки элементов списка, которые находятся на верхнем уровне меню, где бы они ни находились на странице:
$(':not(li) > ul > li > a')
Этот селектор выбирает якоря элементов списка, которые находятся на верхнем уровне меню, игнорируя меню, вложенные в другие меню, даже если они вложены в другие контейнеры:
$('ul:not(ul ul) > li > a')
Вы можете попробовать их для выбора в демоверсии здесь: http://jsfiddle.net/9gPzQ/4/