2009-05-10 22 views
10

en Ruby puede utilizar interpolación de cadenas de este modo:interpolación de cadenas en JavaScript

text = "This is visit number #{numVisits} to this website" 

Esto evita la necesidad de concatenación explícita.

estoy trabajando con jQuery y tener un poco como esto:

$(document).ready(function(){ 
    $("a.ajax").click(function(event){ 
     $("#content").load("data.html this.getClass"); 
    }); 
}); 

El comportamiento que quiero es "hacer clic en <a class="ajax" id="schedule"></a> y la contentdiv en la página actual se sustituye por el schedulediv de data.html. Si escribo manualmente en

load("data.html #test"); 

que funciona, pero quiero que la secuencia de comandos para cargar el DIV con el valor de ID del anclaje se hace clic. Cualquier ayuda se hinchan!

Ejemplo Página: http://www.mariahandalex.info/stack/

+0

¿Qué valor desea pasar el método 'load'? – Gumbo

+0

La frase que está buscando es la interpolación variable, me temo que Javascript no tiene esa característica. http: //en.wikipedia.org/wiki/Variable_interpolation # Interpolation – Danny

+0

Para aclarar, tengo 6 enlaces, cada uno con una etiqueta de identificación única. Cuando hago clic en un enlace determinado, quiero que esa identificación de enlace pase a la función de carga: carga ("data.html # (clickedlinkID); –

Respuesta

3

No se puede incrustar código JavaScript dentro de una cadena, pero puede concatenar una cadena a un objeto utilizando '+' al igual que

$('#content').load('data.html #' + $(this).getClass()); 

Incorporación de código en una cadena, no creo que tenga una nombre. Groovy llama a esas cadenas "Gstring" s, y ruby ​​las llama 'Expression substitution in strings'. No estoy seguro de que tenga un nombre estándar.

+1

Creo que te refieres a $ (this) .getClass() o quizás this.className. – strager

2

Prueba esto:

$(document).ready(function(){ 
    $("a.ajax").each(function(){ 
     var obj = $(this); 
     obj.click(function(event){ 
      alert(obj.attr('id')); 
     }); 
    }); 
}); 
+0

@Alex Mcp: échale un vistazo ahora. – Gumbo

+0

'#' + this.getClass()? usted probablemente quiso decir '.' – geowa4

+0

Pero eso agregará la clase del div "#contenido". Ahí es donde los datos entran y salen. Necesito encontrar una manera de virar en el "ID" atributo del enlace que se hizo clic, porque eso identificará lo que se saca de la página externa. –

5

Javascript no analiza los literales de cadena en busca de marcadores de recambio como Ruby o PHP hace. Deberá usar concatenación.

+0

Resulta que esta respuesta ya no es correcta :( –

13

Esto ha cambiado.

A partir de 2015, no hay ahora una mejor manera: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings

Llevar a JS lo que muchos lenguajes como Ruby y PHP ya han disfrutado.

Por ejemplo, en mi página impulsado jQuery que utilizo:

$('#myModalLabel').html(`Show GRAPH of : ${fundCode}-${funcCode}`); 

que hace de forma segura en mi Firefox actualizada y Chrome como:

Mostrar conexiones de: AIP001-_sma

Tenga en cuenta el uso de backticks que rodean el parámetro de cadena en .html (....)

+1

Oh limpio, no he visto eso todavía. Enorme bandera roja en el navegador requiere, ¡pero es bueno saberlo! Gracias, 6 años después ... :-) –

Cuestiones relacionadas