2010-01-15 12 views
6

propb. muy simple, pero no para mí Buscando pasar una variable en una función de clic para mostrar div a o div b según el enlace al que se hizo clic. Mi código es algo como estoJQuery .click variables de paso

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

pero obviamente el caso de declaraciones son erróneas - Yo sé que sólo estoy usando como ejemplo. Alguna sugerencia? Gracias de adavance

+1

Parece que ha encontrado útil la respuesta de @naeem. No olvide marcarlo como aceptado si ese es el caso. Veo que es nuevo aquí, así que quería asegurarme de que sabía lo importante que es aceptar respuestas sobre * cada * pregunta que haga si es posible. ¡Y bienvenidos a Stack Overflow! –

Respuesta

4

probar este ...

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

1 '=' se utiliza para la asignación
2 '==' es la comparación con la conversión de tipo
3 '===' es la comparación sin conversión tipo

+0

Naeem perfecto, gracias, trabaja sin salir de la caja. Solo estoy aprendiendo JQuery/java así que algo de lang es un poco extraño para mí como un tipo de PHP Gracias de nuevo – russell

6

está asignando el valor de 1-id en lugar de ensayos para un partido:

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

Esto es lo que debe ser similar:

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

Si usted se encuentra cometiendo este error mucho, debe cambiar la prueba:

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

+1 esta publicación finalmente revela por qué las personas escriben (1 == id) en lugar de al revés – jrharshath

+0

Bien explicado, +1 por eso – Sara44

0

Si tu enlace de id son view_1 y view_2, entonces todo debería estar bien aquí, excepto por el hecho de que está utilizando en lugar de = comparación ==.

Si sus show elementos fueron llamados show1 y show2, en lugar de show y show2, usted podría, por supuesto, hacer:

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

Como Doug señaló, el problema está en la asignación condicional

Usted debe También considere cambiar el nombre de sus identificadores para que coincidan directamente con sus ID de vista, para que pueda hacerlo sin casos de prueba, solo mediante la concatenación de cadenas: '

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