Foros del Web » Programando para Internet » Jquery »

alternar funciones en jquery

Estas en el tema de alternar funciones en jquery en el foro de Jquery en Foros del Web. Necesito que al primer click, el texto se ponga en h2, y que con otro click vuelva a ser parrafo (<p>). Ad-infinitum. Quizas esto sea ...
  #1 (permalink)  
Antiguo 21/12/2009, 11:37
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
alternar funciones en jquery

Necesito que al primer click, el texto se ponga en h2, y que con otro click vuelva a ser parrafo (<p>). Ad-infinitum.

Quizas esto sea basico, pero no se como resolverlo. Quizas con toggle?

Cita:
function() {
this.heading(2);
}
  #2 (permalink)  
Antiguo 21/12/2009, 13:53
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: alternar funciones en jquery

Se me ocurrio esto, pero no logro identificar el h2:
Cita:
if ($(this).parent() == "h2") {

alert("subtitulo");

};
Me devuelve object object
  #3 (permalink)  
Antiguo 21/12/2009, 16:17
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: alternar funciones en jquery

podria ser

Código HTML:
<html>
    <head>
        <title>Ejemplo</title>
        <script src="jquery.js" type="text/javascript"></script>
    </head>
    <script type="text/javascript">
    $().ready( function (){
        $("#cambiar").toggle(
            function () {
                $('#alterna').replaceWith("<h2 id='alterna'>" + $('#alterna').text() + "</h2>");
            },
            function () {
                $('#alterna').replaceWith("<p id='alterna'>" + $('#alterna').text() + "</p>");
            }
        );
    });

    </script>
    <style type="text/css">
    p{background:red}
    h2{background:blue}
    </style>
    <body>
        <div id="cambiar"><p id="alterna">el texto</p></div>
    </body>
</html> 
o sino

Código HTML:
<html>
    <head>
        <title>Ejemplo</title>
        <script src="jquery.js" type="text/javascript"></script>
    </head>
    <script type="text/javascript">
    $().ready( function (){
        $("#alterna").live('click',function (){
            if ( this.nodeName == 'P' )
                $(this).replaceWith("<h2 id='alterna'>" + $(this).text() + "</h2>");
            else
                $(this).replaceWith("<p id='alterna'>" + $(this).text() + "</p>");
        });
    });

    </script>
    <style type="text/css">
    p{background:red}
    h2{background:blue}
    </style>
    <body>
        <p id="alterna">el texto</p>
    </body>
</html> 

Última edición por Dany_s; 21/12/2009 a las 16:23
  #4 (permalink)  
Antiguo 21/12/2009, 16:19
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: alternar funciones en jquery

Cita:
Iniciado por mayid Ver Mensaje
Se me ocurrio esto, pero no logro identificar el h2:


Me devuelve object object
eso seria this.parentNode.nodeName == 'H2'

Última edición por Dany_s; 21/12/2009 a las 16:30
  #5 (permalink)  
Antiguo 21/12/2009, 16:40
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: alternar funciones en jquery

Cita:
eso seria this.parentNode.nodeName == 'H2'
Buenisimo. No sabia que se pudiera obtener otra cosa que atributos de un tag. Esto que me pasaste funciona. No se adapta a mi problema porque estoy en un editor WYSIWYG, y no puede reconocer el parent de mi texto seleccionado. Pero funciona para otros casos asi que lo voy a tener presente.

Lo de toggle es buenisimo. Que lo hayas publicado ya me permite comenzar a utilizarlo. Yo sabia que podia utilizarse para algo mas que para desaparecer y aparecer cosas, pero no sabia como.
  #6 (permalink)  
Antiguo 22/12/2009, 06:17
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: alternar funciones en jquery

ah bueno, no creo que servirá poner el código acá no? será bastante lioso?

con jquery puedes hacer también así
si tu estructura es esta
Código HTML:
<div><h2>asd</h2></div> 
esto da verdadero
alert ( $('h2').parent().is('DIV') );
  #7 (permalink)  
Antiguo 22/12/2009, 08:05
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: alternar funciones en jquery

Buenisimo todo.

POner codigo de un WYSIWYG no tiene sentido. Tienen una logica diferente al ressto de proyectos html, por esto del iframe y los html editables online. Lo que te puede decir es que si uno apreta el boton para titulos, todo lo seleccionado en azul se pone en titulo, o todo lo que este en el renglon si no hay seleccion. Pero sin html.

Ya pude resolver la inquietud con un metodo un tanto "arcaico". Pero era necesario hacerlo asi porque no tenia posibilidad de usar selectores html, ni la funcion toggle:

Cita:
h2: function() {

texto = this;
if (typeof n == "undefined") {n = 1; };
if (n % 2 != 1)
{
texto.heading(2);
}
else{
texto.formatBlock("<p>"); };
n++;
}

Última edición por mayid; 22/12/2009 a las 08:15
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:48.