Weet iemand hoe je een link in jquery kan uitschakelen ZONDER return false;
te gebruiken?
Specifiek, wat ik probeer te doen is het uitschakelen van de link van een item, het uitvoeren van een klik op het met behulp van jquery die sommige dingen triggert, dan weer inschakelen van die link, zodat als het opnieuw wordt aangeklikt het werkt als standaard.
Bedankt. Dave
UPDATE
Hier's de code. Wat het moet doen nadat de .expanded
class is toegepast is de uitgeschakelde link weer inschakelen.
$('ul li').click(function(e) {
e.preventDefault();
$('ul').addClass('expanded');
$('ul.expanded').fadeIn(300);
//return false;
});
$('#myLink').click(function(e) {
e.preventDefault();
//do other stuff when a click happens
});
Dat zal het standaard gedrag van een hyperlink voorkomen, dat is het bezoeken van de opgegeven href.
Uit de jQuery tutorial:
Voor klik en de meeste andere gebeurtenissen, kunt u kan voorkomen dat het standaard gedrag - hier, volgens de link naar jquery.com
- door event.preventDefault() aan te roepen in de event handler
Als je preventDefault()
alleen wilt gebruiken als aan een bepaalde voorwaarde is voldaan (iets is bijvoorbeeld verborgen), zou je de zichtbaarheid van je ul kunnen testen met de class expanded. Als deze zichtbaar is (dus niet verborgen) zou de link normaal moeten vuren, omdat het if statement niet wordt ingevoerd, en dus het standaard gedrag niet wordt verhinderd:
$('ul li').click(function(e) {
if($('ul.expanded').is(':hidden')) {
e.preventDefault();
$('ul').addClass('expanded');
$('ul.expanded').fadeIn(300);
}
});
Probeer dit eens:
$("a").removeAttr('href');
EDIT-
Van uw bijgewerkte code:
var location= $('#link1').attr("href");
$("#link1").removeAttr('href');
$('ul').addClass('expanded');
$('ul.expanded').fadeIn(300);
$("#link1").attr("href", location);