Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    jquery preventDefault e $(this)

    ciao.
    Ho creato un semplice menu gerarchico con jquery , il problema è che vorrei inserire la classe VmArrowdown(che ha un immagine di una freccia verso il basso, per fare vedere che apre/chiude cio che c'è sotto) all interno di uno span a sua volta all interno di un link.

    cosi:
    questo è il testo del link<span class="VmArrowdown"> </span>

    il problema era che lanciava i due link in sequenza e , per riparare a questo ho usato una var prevent e questo:
    $('a').click(function(e){

    if(prevent == true){
    e.stopPropagation();
    prevent = false;
    return false;
    }
    alert('via');
    return true;
    });

    in teoria funzionerebbe, in pratica non mi funziona piu bene il codice del menu non mi apre con slideDown gli ul che dovrebbe invece aprire, debuggando ho visto che forse c'è un problema nel $(this) che non è piu lo stesso , è possibile?
    perchè?

    codice:
    codice:
    var prevent = false;
    jQuery(document).ready(function() {
    		jQuery('#VMmenu".$ID." li.VmClose ul').hide();
    		jQuery('#VMmenu".$ID." li .VmArrowdown').click(
    		function() {
    
    		if(!$(this).closest('ul').hasClass('open'))
    		{
    			$('.open').slideUp();
    			$('.open').addClass('close');
    			$('.open').removeClass('open');
    						
    			$(this).parent().next('ul').slideUp();
    			$(this).parent().next('ul').addClass('close');
    			$(this).parent().next('ul').removeClass('open');
    		}
    		if($(this).parent().next('ul').hasClass('open'))
    		{
    
    			$(this).parent().parent().find('ul').slideUp();
    			$(this).parent().parent().find('ul').addClass('close');
    			$(this).parent().parent().find('li').addClass('VmClose');
    			$(this).parent().parent().find('ul').removeClass('open');
    			
    	}
    		
    		if(!$(this).parent().next().is(':visible'))
    		{			
    			$(this).parent().next('ul').slideDown();
    			$(this).parent().next('ul').addClass('open');		
    			$(this).parent().next('li').addClass('VmClose');		
    			$(this).parent().next('ul').removeClass('close');		
    			
    		}
    		prevent = true;
    		
    		});
    	
    	
    	$('a').click(function(e){
    		
    		if(prevent == true){
    			e.stopPropagation();
    			prevent = false;
    			return false;	
    		}
    		alert('via');
    		return true;
    	});
    	});
    grazie.

  2. #2
    Se hai risolto il caso bene altrimenti mi posti anche il codice html che c'è <a> e dove gira questo pezzo di codice



    codice:
    jQuery('#VMmenu".$ID." li.VmClose ul').hide(); 		jQuery('#VMmenu".$ID." li .VmArrowdown').click( 		function() {

    Grazie... Cosi non perdo tempo e posso vedere dove c'è l'errore se esiste...

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 © 2026 vBulletin Solutions, Inc. All rights reserved.