2012-08-26 27 views
15

Problema simple. Tengo una variable js Quiero concatenar también dentro de un selector jQuery. Sin embargo, no está funcionando. No hay errores apareciendo tampoco. ¿Qué está mal? ¿Cómo puedo concatenar correctamente una variable a un texto en un selector de jQuery?Concatenar en jQuery Selector

<div id="part2"></div> 

<script type="text/javascript" > 

$('#button').click(function() 
{ 
var text = $('#text').val();  
var number = 2; 
$.post('ajaxskeleton.php', { 
red: text  
}, 
    function(){ 
    $('#part' + number).html(text); 
    }); 
}); 


</script> 
+3

Debe crear un violín: http://jsfiddle.net/. – valentinas

+0

@ ason328, ¿sabe usted de 'console.log()'. Con su ayuda, al colocarlo en líneas interesantes, puede ver lo que está sucediendo en su código paso a paso – user907860

+0

No, no me di cuenta. Voy a investigar eso ahora. – jason328

Respuesta

30

No hay nada malo con la sintaxis de

$('#part' + number).html(text); 

jQuery acepta una cadena (por lo general un selector CSS) o una DOM Node como parámetro para crear un jQuery Object.

En su caso, usted debe pasar una cadena a $() es decir

$(<a string>) 

Asegúrese de que tiene acceso a las variables number y text.

Para hacer la prueba:

function(){ 
    alert(number + ":" + text);//or use console.log(number + ":" + text) 
    $('#part' + number).html(text); 
}); 

Si ve que usted no tiene acceso, pasarlos como parámetros a la función, se tiene que incluir los parámetros para uual $ .get y pasar los parámetros personalizados después de ellos.

+2

Impresionante. Gracias por la explicación clara. Mi número de var se llamó indefinido, y lo arreglé rápidamente. – jason328

+0

Gald que es fijo. Pero ahora estoy confundido, ¿cómo lo arreglaste? :) – sabithpocker

+1

Error de noob. Estaba llamando al número var fuera del evento click. – jason328

2

La sintaxis de concatenación es correcta.

Lo más probable es que ni siquiera se llame a la función de devolución de llamada. Puede probarlo poniendo una línea alert(), console.log() o debugger en esa función.

Si no se está llamando, lo más probable es que haya un error AJAX. Mira encadenar un manejador .fail() después $.post() para averiguar cuál es el error, por ejemplo .:

$.post('ajaxskeleton.php', { 
    red: text  
}, function(){ 
    $('#part' + number).html(text); 
}).fail(function(jqXHR, textStatus, errorThrown) { 
    console.log(arguments); 
}); 
+0

¿Cuál es el alcance dentro de la llamada de $ .get? ¿el número de variables y el texto estarán accesibles allí? – sabithpocker

+1

@sabithpocker si su código anterior está completo, entonces 'number' y' text' estarán accesibles porque son parte del _copexical_. La variable "gotcha" en callbacks es 'this', pero no estás usando eso. – Alnitak

+0

Gracias por arrojar luz al alcance léxico. – sabithpocker