2010-01-15 15 views
6

propb. molto semplice, ma non per me. Cercando di passare una variabile su una funzione clic per mostrare div o div b in base al collegamento cliccato. Il mio codice è qualcosa di simileJQuery .click passa variabili

$('.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; 
    }); 
    }); 

ma ovviamente il se le dichiarazioni sono sbagliate - so che sto solo usando come esempio. Qualche suggerimento? Grazie a adavance

+1

Sembra che tu abbia trovato utile la risposta di @ naeem. Non dimenticare di contrassegnarlo come accettato se questo è il caso. Vedo che sei nuovo qui, quindi volevo assicurarmi che tu sapessi quanto sia importante accettare le risposte su * ogni * domanda che chiedi se possibile. E benvenuti a Stack Overflow! –

risposta

4

provare questo ...

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

1 '=' viene utilizzata per l'assegnazione
2 '==' è paragone con conversione di tipo
3 '===' è comparatore senza conversione tipo

+0

Perfect Naeem, grazie, funziona molto bene. Sto solo imparando JQuery/java quindi un po 'di lang è un po' strano per me come un ragazzo di PHP Grazie ancora – russell

6

si sta assegnando il valore di 1-id invece di test per una partita:

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

Qui è quello che dovrebbe essere simile:

$('.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; 
}); 

Se vi trovate a facendo questo errore molto, si dovrebbe passare il test in giro:

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

+1 questo post rivela finalmente perché le persone scrivono (1 == id) invece del contrario – jrharshath

+0

Ben spiegato, +1 per quello – Sara44

0

Se il link id sono view_1 e view_2, allora tutto dovrebbe andare bene qui, tranne per il fatto che si sta utilizzando = piuttosto che il confronto ==.

Se i show elementi sono stati chiamati show1 e show2, piuttosto che show e show2, si potrebbe ovviamente fare:

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

Come Doug ha sottolineato, il problema è nella assegnazione condizionale

Si dovrebbe considera anche la possibilità di rinominare i tuoi ID in modo che corrispondano direttamente ai tuoi id di vista, in modo che tu possa farlo senza casi di test, solo tramite concatenazione di stringhe: '

$('.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; 
});