jQuery – regola per “non contiene elemento”

Voglio creare una regola per scegliere come target a elemento nel modo seguente:

  

Tuttavia questo non dovrebbe applicarsi se l’elemento li contiene un altro elemento ul , ad es .:

  

Ho creato l’evento come richiesto ma ho bisogno che funzioni solo sugli elementi del menu “root”.

So che posso solo aggiungere un attributo id per scegliere solo l’elemento desiderato, ma il plugin di menu che il mio client ha installato non è facilmente configurabile.

Se stai facendo una corrispondenza con a fai questo:

 var result = $('#root > li:not(:has(ul)) > a'); 

Se si desidera consentire elementi

    nidificati più profondi e si desidera solo verificare che solo i bambini diretti non abbiano un

      , è ansible farlo:

       var result = $('#root > li:not(:has(> ul)) > a'); 

      MODIFICARE:

      Per avere più di un selettore allo stesso tempo, separali con una virgola tra virgolette:

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

      Cambia logica per requisito.