Entonces, la situación es para comentarios en un blog en progreso, cada comentarista tendrá la capacidad de responder a cualquier comentario. Para hacer esto, tengo un enlace que, cuando se hace clic, revelará (con jQuery) un formulario de respuesta especial allí en lugar del normal en la parte inferior de la página. Entonces, en lugar de cargar un formulario en cada comentario cuando se carga la página, me gustaría cargar solo los formularios que necesita el usuario y solo cuando hacen clic en el enlace.

Ahora, no solo quiero ocultarlos, sé cómo hacerlo. Quiero que no estén allí hasta que se haga clic en ese enlace. Entonces, ¿se puede hacer esto? No es necesario que me diga exactamente cómo hacerlo (aunque podría volver aquí más tarde por algo específico) ¡Si me da un término de búsqueda o una breve descripción, sería increíble! ¡¡Gracias!!

0
williamg 22 dic. 2009 a las 08:32

3 respuestas

La mejor respuesta

En el enlace, haga clic en crear el formulario dinámicamente. p.ej:

$('a.link').click(function()
{
   $('body').append("div id='dynamicdiv' class='y'><input type='text class='xyz' />" +
                    ".........................");
   $('#dynamicdiv').css({'position': 'absolute', 'top': '100px', 'left': '200px'});
});
2
Kobi 22 dic. 2009 a las 05:43

Agregaría el formulario una vez, lo ocultaría, lo clonaría y lo agregaría cuando fuera necesario. El enlace contendría una identificación (u otro identificador) que haga referencia al comentario. Use javascript para manipular el atributo de acción del formulario o la opción de URL (si usa el complemento jQuery.form).

0
czarchaic 22 dic. 2009 a las 05:42

La forma más fácil de inyectar HTML es utilizando la función load de jQuery.

Del ejemplo: carga una página y agrega una selección de la página:

$("#links").load("/Main_Page #jq-p-Getting-Started li");

Para opciones más avanzadas, si las necesita, también puede usar ajax :

$.ajax({
  url: "test.html",
  cache: false,
  success: function(html){
    $("#results").append(html);
  }
});
0
Kobi 22 dic. 2009 a las 05:39