/ / Rimuovi tutti gli Ul che non contengono un attributo personalizzato - jquery, jquery-selors, custom-attributi

Rimuovi tutti gli Ul che non contengono un attributo personalizzato: jquery, selettori jquery, attributi personalizzati

Voglio rimuovere solo quelli ul con li che non hanno un attributo personalizzato su di esso. Ci stavo provando

$myParent.children("li ul:not("ul[isClicked=True]")").remove();

ma non riesco a farlo funzionare. Qualsiasi aiuto sarebbe apprezzato.

risposte:

1 per risposta № 1

Se ti capisco correttamente, vuoi rimuovere il uls che contengono lis con l'attributo isClicked = "True":

$myParent.find("li[isClicked=True]").parent("ul").remove();

Si noti che l'attributo deve contenere la parola "True"; è una stringa, non un valore booleano.

Esempio dal vivo</ S>

Dal tuo commento qui sotto:

In realtà sto cercando viceversa. Rimuovi tutti gli ul che non hanno l'attributo personalizzato.

Questo è l'opposto della frase iniziale della tua domanda ("Voglio rimuovere solo quelle ul con li che hanno un attributo personalizzato su di esso"). :-) Ecco come lo faresti assumendo il ul gli elementi sono figli diretti di $myParent (il tuo codice di esempio suggerisce questo); se questo non è vero, basta cambiare il .children sulla prima riga di .find:

$myParent.children("ul").each(function() {
var $ul = $(this);
if (!$ul.find("li[isClicked=True]")[0]) {
// Doesn"t have one, remove it
$ul.remove();
}
});

Esempio dal vivo


FWIW, quel nome dell'attributo ha vinto "t convalidare. Potresti considerare di passare a data-* modulo di attributo.