User Tag List

Página 6 de 6 PrimerPrimer ... 23456
Resultados 76 al 83 de 83

Tema: ¿Programadores de Ruby en el foro?

  1. #76

    Fecha de ingreso
    Nov 2005
    Ubicación
    Excartagenero
    Mensajes
    23,651
    Mencionado
    276 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5,994
    Agradecer Thanks Received 
    5,821
    Thanked in
    Agradecido 3,794 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    1
    JQuery vs VanillaJS


    JQuery:
    Código:
    $('#menu_galeria a.foto').click( function() 
    {
    	gallery_init();
    	return false;
    });
    VanillaJS
    Código:
    var elements = document.getElementById("menu_galeria").getElementsByTagName('a');
    for(var i = 0, len = elements.length; i < len; i++) 
    {
    	elements[i].onclick = function () 
    	{
    		gallery_init();
    		return false;
    	}
    }
    La verdad es que JQuery está muy bien y es muy cómodo, aunque le estoy echando un vistazo a cómo hacer lo mismo que hago habitualmente y constantemente usando sólo JS, a ver que tal.

  2. #77

    Fecha de ingreso
    Apr 2004
    Mensajes
    1,010
    Mencionado
    39 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    119
    Agradecer Thanks Received 
    95
    Thanked in
    Agradecido 68 veces en [ARG:2 UNDEFINED] posts
    Creo que esos códigos no son 100% equivalentes. Al menos fuera de contexto.

  3. #78

    Fecha de ingreso
    Nov 2005
    Ubicación
    Madrid
    Mensajes
    4,183
    Mencionado
    16 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    56
    Agradecer Thanks Received 
    253
    Thanked in
    Agradecido 154 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por josepzin Ver mensaje
    JQuery vs VanillaJS


    JQuery:
    Código:
    $('#menu_galeria a.foto').click( function() 
    {
    	gallery_init();
    	return false;
    });
    VanillaJS
    Código:
    var elements = document.getElementById("menu_galeria").getElementsByTagName('a');
    for(var i = 0, len = elements.length; i < len; i++) 
    {
    	elements[i].onclick = function () 
    	{
    		gallery_init();
    		return false;
    	}
    }
    La verdad es que JQuery está muy bien y es muy cómodo, aunque le estoy echando un vistazo a cómo hacer lo mismo que hago habitualmente y constantemente usando sólo JS, a ver que tal.
    Son iguales salvo porque no estás cogiendo los enlaces que tengan la clase "foto", sino que estás cogiendo todos los enlaces de dentro del elemento "menu_galería"

    Si te da igual que usuarios con Internet Explorer 8 o menos no puedan usar la funcionalidad, en VanillaJS yo escribiría tu función así:

    Código:
    var elements = document.querySelectorAll("menu_galeria a.foto");
    for(var i = 0; i < elements.length; i++) {
      elements[i].onclick = function (event){
        event.preventDefault();
        gallery_init();
      }
    }
    Los métodos querySelector y querySelectorAll no se conocen mucho, pero seleccionan a partir de clases css igual que hace jQuery, salvo porque luego tienes que seguir recorriendo el array completo.

    Además, en lugar de usar "return false", para evitar que se lance el evento por defecto de la acción, se debe usar event.preventDefault(), que funciona mejor, en más navegadores y en mayor cantidad de casos. Por ejemplo "return false" no funciona para evitar hacer un submit de un formulario en Chrome.

    Y la variable "len" para recorrer el array... me sobra.

    Saludos!

  4. #79

    Fecha de ingreso
    Jun 2013
    Mensajes
    484
    Mencionado
    18 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    281
    Agradecer Thanks Received 
    88
    Thanked in
    Agradecido 71 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por bitrider Ver mensaje
    En la sintaxis intel la longitud de los operandos se infieren de los mismos y sí se puede realizar operaciones con 64, 32, 16 u 8 bits de la misma forma que en 32 bits se podía con 32, 16 u 8... de ahí el nuevo nombre de los registros cuando hace referencia a 64 bits (p.e. rax) y se mantiene la nomenclatura para 32 bits (eax), para 16 bits (ax) y para 8bits (ah y al según te refieras al byte alto o bajo del registro)

    Por cierto, siento el off-topic y no vuelvo a responder a este hilo con off-topic. Si queréis se abre un hilo separado.
    En realidad lo que ocurre es que el compilador asm intel "adivina" la longitud de los registros, y esto, según mi experiencia, puede dar lugar a problemas muy raros.
    Ten en cuenta que movl y movq son 2 instrucciones distintas con sus opcodes distintos.

  5. #80

    Fecha de ingreso
    Nov 2005
    Ubicación
    Excartagenero
    Mensajes
    23,651
    Mencionado
    276 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5,994
    Agradecer Thanks Received 
    5,821
    Thanked in
    Agradecido 3,794 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    1
    Cita Iniciado por Estopero Ver mensaje
    Son iguales salvo porque no estás cogiendo los enlaces que tengan la clase "foto", sino que estás cogiendo todos los enlaces de dentro del elemento "menu_galería"
    Si, esa clase "foto" sobra.

    Cita Iniciado por Estopero Ver mensaje
    Si te da igual que usuarios con Internet Explorer 8 o menos no puedan usar la funcionalidad, en VanillaJS yo escribiría tu función así:
    Código:
    var elements = document.querySelectorAll("menu_galeria a.foto");
    for(var i = 0; i < elements.length; i++) {
      elements[i].onclick = function (event){
        event.preventDefault();
        gallery_init();
      }
    }
    Prefiero curarme en salud, que nunca falta el que dice "a mi no me funciona" y ya se lia...


    Cita Iniciado por Estopero Ver mensaje
    Los métodos querySelector y querySelectorAll no se conocen mucho, pero seleccionan a partir de clases css igual que hace jQuery, salvo porque luego tienes que seguir recorriendo el array completo.
    Les daré un vistazo.



    Cita Iniciado por Estopero Ver mensaje
    Además, en lugar de usar "return false", para evitar que se lance el evento por defecto de la acción, se debe usar event.preventDefault(), que funciona mejor, en más navegadores y en mayor cantidad de casos. Por ejemplo "return false" no funciona para evitar hacer un submit de un formulario en Chrome.
    Pensaba que eran lo mismo... arreglado.


    Cita Iniciado por Estopero Ver mensaje
    Y la variable "len" para recorrer el array... me sobra.
    Anda, es cierto! copié ese código sin darme cuenta de eso

    Gracias por los comentarios.

  6. #81

    Fecha de ingreso
    Oct 2003
    Mensajes
    17,905
    Mencionado
    42 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    214
    Agradecer Thanks Received 
    160
    Thanked in
    Agradecido 109 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por josepzin Ver mensaje
    JQuery vs VanillaJS


    JQuery:
    Código:
    $('#menu_galeria a.foto').click( function() 
    {
    	gallery_init();
    	return false;
    });
    VanillaJS
    Código:
    var elements = document.getElementById("menu_galeria").getElementsByTagName('a');
    for(var i = 0, len = elements.length; i < len; i++) 
    {
    	elements[i].onclick = function () 
    	{
    		gallery_init();
    		return false;
    	}
    }
    La verdad es que JQuery está muy bien y es muy cómodo, aunque le estoy echando un vistazo a cómo hacer lo mismo que hago habitualmente y constantemente usando sólo JS, a ver que tal.
    Eventos delegados y te quitas muchas feas costumbres que veo ahi

    Código:
    var galery = document.getElementById("menu_galeria"),
         galeryClickHandler = function (evt) {
            galleryInit();
            return false; //evt.stopPropagation()?
         };
    // capture the bubbling event from the children, check the evt obj if you need to use the target who trigger the event
    galery.addEventListener('click',galeryClickHandler);
    
    // do it when the listener is not needed anymore
    galery.removeEventListener('click',galeryClickHandler);
    PD. Empieza a usar ESLint ya, usa cualquiera de los preset que trae, la mayoria de los IDES modernos permiten cargarlo y te muestran errores inline
    PD2. https://developer.mozilla.org/es/docs/Web/Events/click
    PD3. https://developer.mozilla.org/es/doc.../Event/bubbles
    PD4. https://developer.mozilla.org/es/doc...I/Event/target
    Última edición por otto_xd; 31/05/2016 a las 19:10

  7. #82

    Fecha de ingreso
    Nov 2005
    Ubicación
    Excartagenero
    Mensajes
    23,651
    Mencionado
    276 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5,994
    Agradecer Thanks Received 
    5,821
    Thanked in
    Agradecido 3,794 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    1
    Gracias, lo voy a probar.

    Esto hace como un .each de jquery: document.getElementById("menu_galeria"), galeryClickHandler = function...

    ¿Cuál es la ventaja de usar "eventos delegados" sobre elemento.onclick?, por ejemplo.

    Veo que Notepad++ tiene plugin JSlint, a ver si funciona.

  8. #83

    Fecha de ingreso
    Oct 2003
    Mensajes
    17,905
    Mencionado
    42 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    214
    Agradecer Thanks Received 
    160
    Thanked in
    Agradecido 109 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por josepzin Ver mensaje
    Gracias, lo voy a probar.

    Esto hace como un .each de jquery: document.getElementById("menu_galeria"), galeryClickHandler = function...

    ¿Cuál es la ventaja de usar "eventos delegados" sobre elemento.onclick?, por ejemplo.

    Veo que Notepad++ tiene plugin JSlint, a ver si funciona.
    No, un each de jquery es un iterador, se reemplaza por map de array
    http://api.jquery.com/jquery.each/
    vs
    https://developer.mozilla.org/es/doc...ales/Array/map

    Ventajas de asignar la funcion a una variable, usar un listener y delegar eventos a un elemento superior.
    * Solo pones un listener para un nodo del arbol DOM, y no un listener por elemento. Menos consumo de memoria.
    * No generas funciones en un bucle, codigo mucho mas rapido.
    * Puedes eliminar el listener, ya que asignas la funcion handler en una variable. Si lo asignas en un bucle de iteracion puedes hacerlo... asignando las funciones a un array, y luego no toques nada en la lista.
    * Usas listener en vez de sobreescribir la funcion del elemento. Me gustan mas los listeners, y creo que son menos propensos a los memory leaks.

    En resumen, la delegacion de eventos consiste en capturar el evento no en cada elemento, algo inviable con listas,que pueden ser dinamicas, sino en un elemento ancestro.

    Sobre JSlint... usa ESLint, y sobre Notepad++, o ha cambiado mucho o te recomiendo sublime, atom, visualcodestudio, webstorm, emacs, vi.... para el desarrollo moderno hay mejores herramientas actualmente que notepad++
    Última edición por otto_xd; 31/05/2016 a las 22:39

Página 6 de 6 PrimerPrimer ... 23456

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •