2010-01-15 22 views
6

propb. sehr einfach, aber nicht für mich. Suchen, um eine Variable auf eine Klickfunktion zu übergeben, um entweder div a oder div b basierend auf dem angeklickten Link anzuzeigen. Mein Code ist so etwas wie diesJQuery .click pass Variablen

$('.view').click(function() { 
    var id = this.id.replace('view_', ""); 
if(id=1) { $('#show').show('slow'); } 
if(id=2) { $('#show2').show('slow'); } 
$('#categories').hide('slow'); 
    return false; 
    }); 
    }); 

aber offensichtlich die, wenn Aussagen falsch sind - ich weiß, dass ich verwende sie nur als Beispiel. Irgendwelche Suggestionen? Dank in Adavance

+1

Es sieht so aus als ob Sie @ naeems Antwort hilfreich gefunden haben. Vergessen Sie nicht, es als akzeptiert zu markieren, wenn dies der Fall ist. Ich sehe, du bist neu hier, also wollte ich sicherstellen, dass du weißt, wie wichtig es ist, Antworten auf * jede * Frage, die du stellst, wenn möglich, zu akzeptieren. Und willkommen bei Stack Overflow! –

Antwort

4

diese versuchen ...

var id = parseInt(this.id.replace('view_', ""), 10); 
if(id === 1) { 
$('#show').show('slow'); 
} else if(id === 2) { 
$('#show2').show('slow'); 
} 

1 '=' für die Zuweisung verwendet wird
2 '==' ist gegenüber Typkonvertierung
3 '===' ist ohne Vergleich Typkonvertierung

+0

Perfect Naeem, danke, funktioniert stright out of box. Ich lerne gerade JQuery/Java so etwas von der Sprache ist ein bisschen seltsam für mich als PHP-Typ Nochmals vielen Dank – russell

6

Sie sind für ein Spiel den Wert von 1-id statt Test zuweisen:

if(id = 1) {} // WRONG: this means if id is successfully SET to 1 

Hier ist, was es sollte wie folgt aussehen:

$('.view').click(function() { 
    var id = this.id.replace('view_', ""); 

    if(id == 1)  { $('#show').show('slow'); } 
    else if(id == 2) { $('#show2').show('slow'); } 

    $('#categories').hide('slow'); 

    return false; 
}); 

Wenn Sie sich selbst finden Wenn Sie diesen Fehler viel machen, sollten Sie den Test umschalten:

if(1 == id) {} // Works 
if(1 = id) {} // Throws JS error instead of failing silently 
+0

+1 dieser Beitrag verrät schliesslich, warum Leute schreiben (1 == id) statt umgekehrt – jrharshath

+0

Gut erklärt, +1 dafür – Sara44

0

Wenn Ihr Link-IDs sind view_1 und view_2, dann sollten alle hier in Ordnung sein, mit Ausnahme der Tatsache, dass Sie = eher als Vergleich == verwenden.

Wenn Ihre show Elemente wurden show1 und show2 genannt, statt show und show2, könnten Sie natürlich tun:

$('.view').click(function() { 
    $('#show' + this.id.replace('view_','')).show('slow'); 
    $('#categories').hide('slow'); 
    return false; 
}); 
0

Als Doug wies darauf hin, das Problem in bedingter Zuweisung

Sie sollen Denken Sie auch daran, Ihre IDs so umzubenennen, dass sie direkt mit Ihren View-IDs übereinstimmen. Sie können dies also ohne Testfälle tun, nur nach Zeichenkettenverkettung: '

$('.view').click(function() { 
    var id = this.id.replace('view_', ""); 

    $('#show' + id).show('slow'); // doesn't have to use if statements 

    $('#categories').hide('slow'); 

    return false; 
});