2010-07-28 12 views
2

il y a une liste d'éléments sur une page, une vierge, avec un exemple étant:Comment supprimer une div si elle contient une certaine chaîne?

<div class="item itemask"> 
    <div class="tophead"> 
    <div class="itemnumber">30</div> 

    <a class="article" href=""></a> 
    </div> 
    <div class="bottomhead"> points by <a class="userlink" rel=""></a> ago&nbsp;&nbsp;&nbsp; <a href="/item?id=">discuss</a> 
</div> 

Par conséquent, ce que jQuery ou JavaScript peuvent être utilisés pour trouver une instance de: <a class="article" href=""> dans tous les cas de div class=item sur la page, puis supprimer ou masquer ce parent div de class=item qui contient ce morceau de code?

Répondre

5

réponse Mise à jour: Sur la base des éclaircissements dans le commentaire, essayez ceci:

$('div.item:has(a.article[href=""])').remove();​ 

Ou cela devrait aussi fonctionner:

$('div.item:has(a.article:not([href]))').remove();​ 

Ou si vous avez des problèmes avec l'un de ces, essayez ceci:

$('div.item a.article').filter(function() { 
    return $.trim(this.innerHTML) == ''; 
}).closest('div.item').remove();​​​​​​​ 

réponse originale:

En utilisant jQuery:

$('div.item:has(a.article)').remove(); 

Cela permet de sélectionner <div> éléments avec la classe item qui a un élément descendant <a> avec la classe article, et retirez-les .

Bien sûr, vous pouvez utiliser .hide() à la place si vous le souhaitez:

$('div.item:has(a.article)').hide(); 

Si vous avez vraiment voulu dire que vous voulez seulement supprimer la parent réelle du a.article, vous faites ceci:

$('div.item :has(> a.article)').remove(); 

Cela permettra d'éliminer le parent de a.article au lieu de celui avec la classe .item. Je ne savais pas ce que tu voulais dire.

+0

+1 Je ne savais pas cacher, gentil! – Adam

+0

la première option masque tous les éléments, la deuxième option masque la partie inférieure de tous les éléments. voyez la page ici, et notez les deux objets vides en bas: http://bit.ly/cor8dY - c'est ce que j'essaie de cacher. Le problème est que ce ne sont que les éléments de classe qui doivent être cachés qui ont à l'intérieur dont l'ancre est vide. – Adrian33

+0

@ Adrian33 - Je vois ce que tu veux dire. Je vais mettre à jour dans une minute. – user113716

2

Pour masquer:

$("div.item a.article[href='']").parents(".item").css('display','none'); 

Pour supprimer:

$("div.item a.article[href='']").parents(".item").remove(); 
+0

cela n'a aucun effet sur la page – Adrian33

+0

@ Adrian33 - Il fait. Il cache/supprime le div 'tophead'. –

+0

@ Adrian33 - Je vois ce que vous voulez de votre lien. J'ai modifié le code. Réessayer. – Adam

Questions connexes