2015-05-31 2 views
5

Bei my page (pass = "shooga1") wird durch Klicken auf SAMMLUNGEN (linke Seitenleiste) ein Untermenü mit einem Eintrag namens "COLLECTION # 1" angezeigt. Wenn Sie auf diese Elemente klicken, wird ein weiteres Untermenü angezeigt, dessen Elemente aus irgendeinem Grund nicht angeklickt werden können. Warum nicht?Propagationsproblem mit Untermenüs

Hier ist mein Code:

$('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

funktioniert gut auf Chrom/Osx –

Antwort

1

e.stopPropagation(); aus dem unteren Teil des jquery entfernen (die für das zweite Auswahlfeld)

4

Sie schaltet ein bisschen fehl am Platz ist ... sollen sie innerhalb der click Handler sein. Sie können den Code eine Tonne allerdings mit einem Handler für alles und ein einfaches Kind Menü Prüfung vereinfachen:

$(".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

Rufen Sie mich verrückt, aber Sie haben ein A-Element. Wenn Sie also auf die Zeile li klicken, klicken Sie tatsächlich auf ein A-Element - eine Ebene unter der li -, dessen DEFAULT-Verhalten darin besteht, einen Link zu öffnen.

Haben Sie e.preventDefault() außer e.stopPropagation() versucht? weil die stopPropagation (auch stopImmediatePropagation) aufhört aufzublühen ... aber Sie haben dort einen Link, also wollen Sie auch das Standardverhalten stoppen.