Как указано в других ответах, самый простой метод состоит в том, чтобы однозначно идентифицировать корневой элемент (по идентификатору или имени класса) и использовать прямой селектор потомков.
$('ul.topMenu > li > a')
Однако я столкнулся с этим вопросом в поисках решения, которое бы работало на неназванных элементах на различной глубине DOM.
Этого можно достичь, проверив каждый элемент и убедившись, что у него нет родителя в списке соответствующих элементов. Вот мое решение , обернутое в селектор jQuery 'topmost'.
jQuery.extend(jQuery.expr[':'], {
topmost: function (e, index, match, array) {
for (var i = 0; i < array.length; i++) {
if (array[i] !== false && $(e).parents().index(array[i]) >= 0) {
return false;
}
}
return true;
}
});
Используя это, решение оригинального сообщения:
$('ul:topmost > li > a')
// Or, more simply:
$('li:topmost > a')
Полная версия jsFiddle доступна здесь .