jQuery - rule for "does not contain element"
If you're matching the a
do this:
var result = $('#root > li:not(:has(ul)) > a');
If you want to allow deeper nested <ul>
elements, and just want to check to make sure only the direct children don't have a <ul>
, you could do this:
var result = $('#root > li:not(:has(> ul)) > a');
EDIT:
To have more than one selector at the same time, separate them with a comma inside the quotes:
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 }});
Change logic per requirement.