2009-09-02 2 views
19

Ich habe eine Reihe von Tabellen, die verschachtelte Tabellen haben. Ich benutze jQuery, um einige der Tabellenzellen als eine Zahl zu verbergen, sind leer oder der Inhalt ist irrelevant.jQuery teilweise Selektoren

Ich benutze jQuery, um alle TDs und dann jQuery zu verbergen, zum Beispiel, wenn sie eine <P> enthalten.

Leider enthalten einige der TDs nichts, aber müssen noch angezeigt werden. Die Klasse der TD gegeben ist dynamisch, so werde nicht ich in der Lage sein, für sie zu codieren alle (Sensibly) aber sie tun alles Ende ‚Knoten‘

ich mich gefragt, ob sein mögliches so etwas wie ...

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

Ein bisschen unreleated, aber was genau bedeutet das '$ (function() {... }); 'Bit bedeuten? Was ist der Unterschied zwischen diesen und nur den Inhalt zu schreiben? Hat das mit dem Umfang zu tun? – Eric

+0

Es wird auf Last ausgeführt –

+0

Also eine Kurzform für '$ (Dokument) .ready()', oder '$ (window) .load()'? – Eric

Antwort

38

Dies wird alle Tds mit Nodeirgendwo in ihrem Klassennamen auswählen.

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

Dies wird jede tds mit Nodeam Ende ihre Klassennamen wählen.

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

Beachten Sie, dass .show() tut ungefähr das Gleiche wie .css('display','inline');

+1

Nur ein Hinweis: Ich hatte vor kurzem Probleme mit der $ = Version in Firefox. Wenn Sie das gleiche Problem haben, wenn Sie Ihre Klassen etwas anders gestalten. Denken Sie daran, dass Sie nicht auf eine Klasse pro Element beschränkt sind. – krdluzni

+2

Was mich daran erinnert, '' td [class $ = Node] ''wird * nicht * mit' 'übereinstimmen, da der Klassentext nicht in' node' – Eric

+0

+1 für die _show endet()_ Kommentar. – NVRAM

3

Der [attribute$="value"] Selektor Sie Attribute lassen übereinstimmen, die mit einem bestimmten Wert zu beenden. Beachten Sie, dass die Verwendung von show() anstelle der direkten Änderung der CSS die Anzeigeeigenschaften des Elements, das Sie aufdecken, beibehält. Wenn Sie wirklich zwingen wollen, dass sie inline angezeigt werden, können Sie es zurück in die CSS-Methode zurückkommen mit display: inline

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