2017-09-22 5 views
0

Ich versuche, eine Sidebar für mobile Geräte anzuzeigen. Wenn ich auf ein Element klicke, öffne ich dieses li-Tag mit einem Untermenü. Im Browser funktioniert es gut, aber auf mobilen Geräten funktioniert es nicht.jquery klicken Ereignis funktioniert nicht auf mobilen Geräten

Ich habe auch versucht, "Touchstart" statt klicken zu verwenden. Das Problem hier ist, wenn ich das Element berühre und mit dem Scrollen anfange, wird das Untermenü geöffnet. Ich möchte es nur öffnen, wenn ich darauf klicke/angeklickt habe.

Kann mir jemand mit diesem Problem helfen?

HTML:

<li> 
    <a class="filter-attribute"><i class="fa fa-chevron-down pull-right"></i>head1</a> 
     <ul class="child"> 
     <li class="filter-item"><input type="checkbox" name="attributeItems[]">sub1</li> 
     </ul> 
</li> 

jQuery:

$(document).on("click", ".filter-attribute", function() { 
$(this).next('.child').fadeToggle("slow"); 
}); 
+0

Sie können ' Touchstart oder Mousedown für mobile Geräte –

+0

Wenn ich Sie mousedown, ist es nichts öffnen – jol123

Antwort

0

können Sie mousedown für diese. Überprüfen aktualisiert Snippet

$(document).on("mousedown", ".filter-attribute", function() { 
 
    $(this).siblings('.child').fadeToggle("slow"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
<li> 
 
    <a class="filter-attribute"><i class="fa fa-chevron-down pull-right"></i>head1</a> 
 
     <ul class="child"> 
 
     <li class="filter-item"><input type="checkbox" name="attributeItems[]">sub1</li> 
 
     </ul> 
 
</li> 
 
</ul>

+0

Ist es möglich, dass es für mich nicht funktioniert, weil mein Inhalt hinter der Sidebar scrollt? – jol123

0

eine andere Art und Weise versuchen, es zu machen, Berührungsstartereignis verwenden, funktioniert es auf mobilen Geräten:

$(document).on("click touchstart", ".filter-attribute", function (e) { 
 
    $(this).closest("li").find('.filter-item').fadeToggle("slow") 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<li> 
 
    <a class="filter-attribute"><i class="fa fa-chevron-down pull-right"></i>head1</a> 
 
     <ul class="child"> 
 
     <li class="filter-item"><input type="checkbox" name="attributeItems[]">sub1</li> 
 
     </ul> 
 
</li>

+0

Dies funktioniert nicht für mich – jol123

+0

@ jol123 Überprüfen Sie meine aktualisierte Antwort. – SilverSurfer

+0

das öffnet meine Seitenleiste nicht – jol123

Verwandte Themen