jQuery – “不包含元素”的规则
我想创建一个规则来定位以下元素:
但是,如果li
元素包含另一个ul
元素,则不应该这样,例如:
我已根据需要创建了事件,但需要它才能处理“根”菜单项。
我知道我只能添加一个id属性来定位所需的元素,但我的客户端安装的菜单插件不容易配置。
如果你匹配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 } });
根据要求更改逻辑。