2010-03-31 9 views
2
<div> 
    <div>test</div> 
</div> 

$("div:contains('test')").css('display','none'); 

Je sais que je vais me lancer à ce sujet. Le problème est que lorsque cela fonctionne tous les divs sont cachés en raison de l'imbrication. Comment faire pour que le div parent ne soit pas caché? Je suis limité à utiliser 1.2.6Essayer d'utiliser contient un sélecteur dans les divs imbriqués

Répondre

3
$("div:contains('test'):not(:has(div))").hide(); 
+0

Légende, qui fera le travail. Je vous remercie! – Dtour

1

Si vous voulez une solution élégante, définissez un nouveau sélecteur. Malheureusement, :empty n'est pas suffisant car tout ce qui concerne les enfants de nœuds de texte n'est pas vide.

$.extend($.expr[':'], { 
    leaf: function(elem, i, match) { 
    return $(elem).children().length == 0; 
    } 
}); 

Et vous pouvez faire:

$("div:leaf:contains('test')").hide(); 
Questions connexes