2009-07-18 2 views
1

HTML Gegeben: so etwas zu tunWie rufen Sie die Klasse ab, um die Schaltfläche auszublenden?

<button id="buttonId1" class="hello universe"> 
<button id="buttonId2" class="hello world"> 

Was ist der richtige Weg ist:

$("#buttonId1").click(function() 
{  
    alert($("#buttonId1").getClass()); 
} 

Ich weiß, die getClass Funktion nicht in JQuery oder Javascript nicht vorhanden ist. Aber ich hoffe, dass es einen Weg gibt, sich dem anzunähern. Ich habe ein komplexeres Problem in der realen Welt, das schwierig in eine einfache Frage zu reduzieren, aber im Grunde denke ich muss ich irgendwie auf die Klasse eines Elements zugreifen und dann diese Klassenzeichenfolge verwenden, um eine zusätzliche Auswahl wie folgt durchzuführen:

$(("#buttonId1").getClass().filter("world")).hide(); 

Vielleicht gibt es einfachere Möglichkeiten, die buttonId2 in dem Code zu verstecken, den ich gegeben habe - das ist nicht wirklich der Punkt, obwohl. Was mich interessiert, ist, wie ich in die Klasse komme und sie dann weiter benutze. Die einzige Lösung, die ich bisher gefunden habe, ist eine lange Verzweigung von if/else-Anweisungen, die alle möglichen Klassen mit der hasClass-Funktion überprüft. Aber es ist eine sehr unelegante Lösung.

EDIT: Als Reaktion auf Paolo Antwort, vielleicht so etwas wie dies funktionieren wird button2 verstecken:

$(("#buttonId1").attr('class')[0].filter("world")).hide(); 

Antwort

2

Ich denke, wenn Sie versuchen zu erklären, was Ihre ultimative Ziel ist es ich im Stande sein könnte in der Tat zu helfen Sie zu erreichen Ihre endgültiges Ergebnis in dem besten "jQuery Weg" - ohne dass aber alles, was ich sagen kann, ist, dass:

$("#buttonId1").click(function() {  
    alert($(this).attr('class')); 
}); 

aufmerksam machen sollte, 'Hallo' und:

$("#buttonId2").click(function() {  
    alert($(this).attr('class')); 
}); 

Würde

(Als Randnotiz ‚Hallo Welt‘ aufmerksam machen, in einer Event-Funktion den Wähler redoing wie Sie in Ihrem Beispiel haben ist eine schlechte Praxis; Sie können einfach $(this) verwenden Sie das Element, um anzuzeigen, die derzeit auf)

+0

Ich möchte die Klasse verwenden ‚Hallo‘, das ist geteilt durch beide Tasten, um button2 zu verbergen. Um dies zu tun, müsste ich auch nach der Klasse 'world' filtern, die button2 hat, aber button1 nicht. Danke für den Tipp über $ (this). –

+0

korrigieren Sie mich, wenn ich falsch liege, aber attr ('Klasse') wird ein Array zurückgeben, keine Zeichenkette ... da sind zwei Klassen aufgelistet: '[" Hallo "," Welt "]' Also die nächste Frage ist welche ein? – DGM

+0

Ja, ich müsste das erste Element des attr ('class') - Arrays abrufen und dieses dann im Filter auf das zweite Element anwenden. Klingt klatschig, ich weiß. –

1

diese gehandelt werden Versuchen:

$("#buttonId1").click(function() 
{ 
var classname = $("#buttonId1").attr("class") 
alert(classname); 
} 
0

Referenz: element.className

$("#buttonId1").click(function() 
{  
    alert(document.getElementById("buttonId1").className); 
}