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 } }); 

      根据要求更改逻辑。