2016-10-10 3 views
0

Ich habe es geschafft, das Attributelement eines Listenelements zu entfernen, aber ich habe Mühe, Folgendes zu tun: Wenn ich auf ein Listenelement klicke, sollte es eine Klasse namens wichtig hinzufügen, andernfalls muss die Klasse nicht existieren.jquery single click funktioniert nicht richtig

Ich versuchte dies mit jQuery:

$(document).ready(function(){     
    var origHref = $('ul#primary-menu > li.menu-item-has-children > a').attr('href'); 
//alert(origHref); 
    var clicks = 0; 
    $('ul#primary-menu > li.menu-item-has-children > a').removeAttr("href").data("origHref",origHref); 
    $('ul#primary-menu > li.menu-item-has-children').click(function(){ 
    clicks++; 
    if(clicks === 1){ 
     $('ul#primary-menu > li.menu-item-has-children').addClass('important'); 
    } 
    else if(clicks > 1){ 
     alert("you clicked twice"); 
    } 
    });  
}); 

Problem: Wenn ich das Element und klicken Sie auf die Liste zum ersten Mal prüfen, happens.Only nichts, wenn ich zum zweiten Mal klicken, dass die Klasse hinzugefügt wird .

HINWEIS: Ich möchte das nur für mobile Geräte tun, also brauchen Sie sich keine Sorgen über Bildschirme zu machen, die breiter als 800 Pixel sind.

Bitte helfen.

+0

Keine Notwendigkeit Zustand zu überprüfen, können Sie direkt '.addClass verwenden können (‚wichtig‘)', wenn die Klasse ist nicht da wird es hinzugefügt werden sonst ignoriert. Beachten Sie auch '$ ('ul # primary-menu> li.menu-item-has-children'). AddClass ('wichtig')' fügt allen 'li' Elementen eine Klasse hinzu, __Was genau ist Ihr Problem? __ – Satpal

+0

Sie kann element.oneclick – AhbapAldirmaz

+0

@Satpal versuchen. Ich möchte eine Klasse hinzufügen, die wichtig ist, wenn ich zum ersten Mal auf ein Listenelement klicke, um Elemente eines Unterelements anzuzeigen, und wenn ich zum zweiten Mal klicke, sollte es mich zu einer anderen Seite führen. Sie können basierend auf dieser Frage, die letzte Woche gepostet wurde, antworten: http://stackoverflow.com/questions/39911486/how-to-prevent-a-link-action-on-a-first-click-and-allowing-second -click-only-usi/39912241? noredirect = 1 # comment67114948_39912241 –

Antwort

2

eine tun, wenn basierend auf der Klasse nicht eine globale Variable, verhindern, dass das Standard-Click-Ereignis:

$('ul#primary-menu > li.menu-item-has-children').click(function(e) { 
    if ($(window).width() < 800) { 
    if (!$(e.target).closest('ul').is('.sub-menu')) { 
     e.preventDefault(); 
     if (!$(this).hasClass('important')) { 
     $(this).addClass('important') 
      //toggle the menu 
     } else { 
     //redirect if second click 
     window.location = $(this).find('a').attr('href'); 
     } 
    } 
    } 
}); 
+0

madalin ivascu.Die wichtige muss nur hinzugefügt werden, wenn ich auf das li (zum ersten Mal) klicken –

+0

ja das tut, was Sie wollen – madalinivascu

+0

.Das Ergebnis bleibt gleich ... aber ich hatte gerade die Idee, den aktuellen Link von einem Tag durch # zu ersetzen. Kannst du mir da helfen? Ursache Ich denke, es funktioniert nicht, weil ich das Attributelement aus dem a-Tag entfernt habe. –