2009-09-02 6 views
19

J'ai un certain nombre de tables, qui ont des tables imbriquées. J'utilise jQuery pour cacher certaines cellules de la table en tant que nombre sont vides ou le contenu non pertinent.Sélecteurs partiels jQuery

J'utilise jQuery pour masquer tous les TD, puis jQuery pour les montrer, par exemple, s'ils contiennent un <P>.

Malheureusement certains des TD ne contiennent rien mais doivent encore être affichés. La classe mais ils font tout fin « Node »

la TD sont données est dynamique, donc je ne serai pas en mesure de code pour tous (Raisonnablement) Je me demandais s'il est possible de faire quelque chose comme ...

$(function() { 
    $('TR .*Node').css('display','inline'); 
}); 
+1

Un peu unreleated, mais ce qui fait exactement la '$ (function() {... }); 'peu dire? Quelle est la différence entre ça et simplement écrire le contenu? Est-ce à voir avec la portée? – Eric

+0

Il sera exécuté sur le chargement –

+0

Donc un raccourci pour '$ (document) .ready()', ou '$ (fenêtre) .load()'? – Eric

Répondre

38

Cela sélectionnera tout tds avec Nodequelque part dans leur nom de classe.

$('td[class*=Node]').css('display','inline'); 

Cela permet de sélectionner une tds avec Nodeà la fin de leur nom de classe.

$('td[class$=Node]').css('display','inline'); 

Gardez à l'esprit que .show() à peu près la même ne fait chose que .css('display','inline');

+1

Juste une note: J'ai récemment eu des problèmes avec la version de $ = dans Firefox. Si vous avez le même problème en considérant la conception de vos classes un peu différemment. Rappelez-vous, vous n'êtes pas limité à une classe par élément. – krdluzni

+2

Ce qui me rappelle, '' td [classe $ = Node] ''ne * correspondra pas' ', car le texte de la classe ne se termine pas par' node' – Eric

+0

+1 pour le _show() _ commentaire. – NVRAM

3

Le sélecteur [attribute$="value"] vous permettra de faire correspondre les attributs qui se terminent par une valeur particulière. Notez que l'utilisation de show() au lieu de changer directement le CSS conservera les caractéristiques d'affichage de l'élément que vous révélez. Si vous voulez vraiment les forcer à afficher en ligne, vous pouvez revenir en arrière à la méthode avec css display: inline

$('td[class$="Node"]').show(); 
2
$(function() { 
    $('td[class*=Node]').css('display','inline'); 
});