Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [jQuery] Perdere focus e nascondere div

    Buon giorno.
    Ho un menu, e per ogni voce dei sottomenu.
    Vorrei che, quando i menu perdono il focus, si chiudano automaticamente anche i relativi sottomenu.
    Solo che non vorrei avere del codice troppo lungo e pesante.
    Al momento ho questo:
    codice:
    $( ".macroarea-b")
      .focus(function() {
        $('.ul_first').hide();
      });
    
    $( ".macroarea-c")
      .focus(function() {
        $('.ul_first').hide();
      });
    
    $( ".macroarea-d")
      .focus(function() {
        $('.ul_first').hide();
      });
    Se fate caso, vado a nascondere lo stesso elemento in tre momenti diversi.
    Volevo sapere come ottimizzare questo codice.
    Avevo pensato a questa soluzione, ma sembra non funzionare
    codice:
    $( ".macroarea-b",".macroarea-c", ".macroarea-d")
      .focus(function() {
        $('.ul_first').hide();
      });
    Che mi dite?
    Grazie mille.

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, come esiste l focus esite anche focusout oppure blur

  3. #3
    ciao, il focusout è come se non lo riconosce.
    Però a parte questo, volevo sapere come gestire queste classi:
    codice:
    $(".macroarea-b",".macroarea-c",".macroarea-d")
      .focus(function(){
        $('.ul_first').hide();
      });
    Volevo ottimizzare il codice, se il focus ce l'hanno una di queste tre classi(sono 3 link), vado a nascondere ".ul_first", ma in questo modo non funziona.
    Si posso raggruppare le tre classi di cui sopra, senza avere troppo codice?
    Grazie.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    codice:
    $(".macroarea-b, .macroarea-c, .macroarea-d")
      .focus(function(){
        $('.ul_first').hide();
      });
    

    cosi deve andare, usato su un elemento che abbia il focus (tipo input) cosa che non mi risulta abbiano i div o elementi markup
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    grazie come sempre.
    Altra curiosità.
    Come faccio a sapere che quell'elemento ha il focus?
    grazie.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non so se è una cosa fattibile prova a ciclare gli elementi input del Form e se con un if($(this).focus) o if($(this).attr("onfocus")) si possa intercettare, ho qualche dubbio in merito
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    per intenderci altrimenti sprechiamo tempo.
    Ho questo script:
    codice:
    $( ".macroarea-b").focus(function() {
            $('.ul_first').hide();
            $('.ul_second').hide();
            $('.ul_third').hide();
            $('.ul_fourth').hide();
        });
        $(".macroarea-c").click(function() {
              $(".macroarea-c").focus();
              $('.ul_first').hide();
            $('.ul_second').hide();
            $('.ul_third').hide();
            $('.ul_fourth').hide();
        });
        $( ".macroarea-c").focus(function() {
            $('.ul_first').hide();
            $('.ul_second').hide();
            $('.ul_third').hide();
            $('.ul_fourth').hide();
        });
        $(".macroarea-d").click(function() {
              $(".macroarea-d").focus();
              $('.ul_first').hide();
            $('.ul_second').hide();
            $('.ul_third').hide();
            $('.ul_fourth').hide();
        });
        $( ".macroarea-d").focus(function() {
            $('.ul_first').hide();
            $('.ul_second').hide();
            $('.ul_third').hide();
            $('.ul_fourth').hide();
        });
        $(".macroarea-e").click(function() {
              $(".macroarea-e").focus();
              $('.ul_first').hide();
            $('.ul_second').hide();
            $('.ul_third').hide();
            $('.ul_fourth').hide();
        });
        $( ".macroarea-e").focus(function() {
            $('.ul_first').hide();
            $('.ul_second').hide();
            $('.ul_third').hide();
            $('.ul_fourth').hide();
        });
    Dato che sono azioni che si ripetono, volevo ottimizzare il tutto.
    Cosi non nasconde gli elementi, perché manca il focus
    codice:
    $(".macroarea-b,.macroarea-c,.macroarea-d,.macroarea-e")
            .click(function() {
              $('.ul_first').hide();
            $('.ul_second').hide();
            $('.ul_third').hide();
            $('.ul_fourth').hide();
        });
    //nemmeno facendo cosi
    $(".macroarea-b,.macroarea-c,.macroarea-d,.macroarea-e")
            .focus(function() {
              $('.ul_first').hide();
            $('.ul_second').hide();
            $('.ul_third').hide();
            $('.ul_fourth').hide();
        });
    Devo avere sia il click che il focus per tutti gli elementi.
    Come faccio?
    Ultima modifica di ANTAGONIA; 17-11-2014 a 11:16

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Come già detto su un elemento markup il focus non esiste pertanto usa solo l'evento click.
    Le ottimizzazioni ci vuole tempo (voglia) ottima conoscenza del linguaggio/framework che si usa e bisogna conoscere bene il progetto, auguri.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    cioè, il focus su un link, non esiste? Scusami non ho capito.

    Queste classi(.macroarea-b,.macroarea-c,.macroarea-d,.macroarea-e) fanno riferimento ai link per la gestione(nascondere) degli elementi(ul_first,ul_second,ecc ecc).

    Per l'evento click ho fatto cosi:
    codice:
    $( ".macroarea-b").click(function() {
    		$(".macroarea-b").focus();
    		$('.ul_first').hide();
    		$('.ul_second').hide();
    		$('.ul_third').hide();
    		$('.ul_fourth').hide();
    	});
    Ma alla fine ho 4 elementi che fanno esattamente la stessa cosa, come postato prima.
    Per l'ottimizzazione ti ringrazio, non voglio farti perdere tempo, anzi ti ringrazio come sempre
    Se trovo la soluzione la posto.
    Grazie ancora.

  10. #10
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Esatto il focus su un link non esiste
    $(".macroarea-b, .macroarea-c, .macroarea-d")
    .click(function(){
    $
    ('.ul_first, .ul_second, .ul_third, .ul_fourth').hide();
    });
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.