$(this).assClass funktioniert nicht

DiDiJo

Erfahrenes Mitglied
Hi Leute,

ich hab nen kleines Problem mit einer jQuery-Funktion.

Ich habe mir folgenden Link aufgebaut:
HTML:
<a href="javascript:switchABCInfo('A','Altbau');" class="active">Altbau</a>

Die Funktion die aufgerufen wird sieht wie folgt aus:
Code:
function switchABCInfo(letter, field) {
	$("#letter_text_"+letter+" li").css({
		display:'none'
	});
	
	$("."+field).css({
		display:'block'
	});
	
	$(".letter_keys a").removeClass('active');
->	$(this).addClass('active');
}

die letzte Zeile funktioniert aus irgendeinem Grund nicht ... oder hab ich da was komplett falsch aufgeschnappt ? Eigentlich sollte ich doch über "this" meinen angeklickten Link ansprechen können ...

mfg DiDi
 
$(this).assClass funktioniert nicht
:D
Ich habs jetzt nicht getestet aber so kann das meines Erachtens ja gar nicht funktionieren, da es sich ja um eine normale Javascript-Funktion handelt.
So würde das z.B. gehen:
Code:
$(".linkClass").click(
  function() {
    $(this).addClass('active');
  }
);
Dann bezieht sich das "this" auf das Objekt mit der Klasse "linkClass", welches angeklickt wurde. Bei dir kann es sich ja auf nichts beziehen...
 
Hi,

this bezieht sich in deiner Funktion auf den Gültigkeitsbereich, in dem sich Funktions-Objekt befindet - in deinem Fall auf window.

Willst du mittels Hilfe auf das auslösende Element zugreifen, musst du es als Argument übergeben. Hierbei ist jedoch wieder zu unterscheiden, in welchem Kontext/Gültigkeitsbereich du die Funktion aufrufst.

  1. href - Kontext ist hier ebenfalls das window-Objekt
  2. onclick oder sonstige Eventhandler - Kontext ist das auslösende Element

Kleines Beispiel:
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
  <!--
window.name = "window-Objekt";
function switchABCInfo(strEins, strZwei, _this){
  alert("this: " + this.name + "\n_this (übergeben): " + _this.name);
}
 //-->
</script>
</head>
<body>
<a href="javascript:switchABCInfo('A','Altbau', this);" class="active" name="Link-Objekt">Altbau (Aufruf im window-Kontext)</a><br>
<a href="#" onclick="switchABCInfo('A','Altbau', this); return false;" class="active" name="Link-Objekt">Altbau (Aufruf im Element-Kontext)</a>
</body>
</html>
Ciao
Quaese
 
Und um das "echte" this zu benutzen (ohne den extra Parameter) kannst du explizit den Kontext festlegen, indem du die Methode mittels "call()" aufrufst und als ersten Parameter das Objekt angibst.

Folgendes kann noch als dritter Link in Quaese's Beispiel eingefügt werden. "this" und "_this" sind in der Funktion gleich. Der vierte Parameter ist natürlich redundant und nur zur Demonstration da!
HTML:
<a href="#" onclick="switchABCInfo.call(this, 'A','Altbau', this); return false;" class="active" name="Link-Objekt">Altbau (Aufruf im Element-Kontext mit this-Überschreibung)</a>
 

Neue Beiträge

Zurück