2015-05-31 15 views
5

Su my page (pass = "shooga1"), facendo clic su COLLECTIONS (barra laterale sinistra) viene visualizzato un sottomenu contenente un elemento denominato "COLLECTION # 1". Facendo clic su questi elementi viene visualizzato ancora un altro sottomenu, i cui elementi per qualche motivo non possono essere cliccati. Perchè no?Problema di propagazione con i sottomenu

Ecco il mio codice:

$('li.item_collection').toggle(function() { 
    $('li.item_collection > .sub-menu').slideDown({ duration: 200, easing: 'easeInOutExpo' }); 
}, function() { 
    $('li.item_collection > .sub-menu').slideUp(100); 
}); 
$('li.item_collection > .sub-menu').click(function(e) { 
    e.stopPropagation(); 
}); 

$('li.item_collection > .sub-menu > li').toggle(function() { 
    $(this).children('ul').slideDown({ duration: 200, easing: 'easeInOutExpo' }); 
}, function() { 
    $(this).children('ul').slideUp(100); 
}); 
$('li.item_collection > .sub-menu > .sub-menu > li').click(function(e) { 
    e.stopPropagation(); 
}); 
+0

funziona bene su chrome/osx –

risposta

1

Rimuovere e.stopPropagation(); dalla parte inferiore della jquery (quello per la seconda casella di selezione)

4

vostri alterna sono un po 'fuori luogo ... dovrebbero essere all'interno dei gestori click. È possibile semplificare il codice di una tonnellata anche se con un gestore per tutto e un semplice controllo menu figlio:

$(".menu li a").click(function(e) { 
    e.preventDefault(); //Dont goto the link right away 

    //Check for the existence of a ul at the first index 
    var submenu = $(this).parent("li").find("ul:eq(0)"); 
    if (submenu.length) { 
     //If a child menu, toggle it 
     submenu.slideToggle(); 
    } else { 
     //No child menu, head to the link! 
     location.href = this.href; 
    } 
}); 
1

Call me pazzesco, ma è necessario un elemento A. Quindi, quando fai clic sulla riga li, fai effettivamente clic su un elemento A - un livello sotto il li - il cui comportamento DEFAULT è quello di aprire un collegamento.

Hai provato e.preventDefault() oltre a e.stopPropagation()? perché stopPropagation (anche stopImmediatePropagation) smetterà di ribollire ... ma hai un link lì, quindi vuoi anche fermare il comportamento predefinito.

Problemi correlati