Я хочу создать правило предназначаться a
элемент в следующем:
<ul id="root">
<li>
<a href="item.html">Root Menu Item</a>
</li>
</ul>
Однако это не должно применяться если li
элемент содержит другого ul
элемент, например:
<ul id="root">
<li>
<a href="#">Sub Menu</a>
<ul>
<li>
<a href="item.html">Sub Menu Item</a>
</li>
</ul>
</li>
</ul>
Я создал событие как требуется, но нуждаюсь в нем, чтобы только работать над "корневыми" пунктами меню.
Я знаю, что могу просто добавить идентификационный атрибут для предназначения для желаемого элемента только, но плагин меню, который установил мой клиент, не легко настраивается.
Если вы соответствуете a
, сделайте следующее:
var result = $('#root > li:not(:has(ul)) > a');
Если вы хотите разрешить более глубокие вложенные элементы
и просто хотите убедиться, что только прямые дочерние элементы не имеют
, вы можете сделать это:
var result = $('#root > li:not(:has(> ul)) > a');
РЕДАКТИРОВАТЬ:
Чтобы иметь более одного селектора одновременно, разделите их запятой внутри кавычек:
var result = $('#root > li:not(:has(> ul)) > a, #someOtherElement');
$('#root a').click(function(e) {
if ( $(this).parents('ul').length > 1 ) {
e.preventDefault(); // cancel action for anchors inside of #root who have multiple parent list elements
}
});
Изменение логики в соответствии с требованиями.