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 № 1Se ti capisco correttamente, vuoi rimuovere il ul
s che contengono li
s 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();
}
});
FWIW, quel nome dell'attributo ha vinto "t convalidare. Potresti considerare di passare a data-*
modulo di attributo.