2015-07-20 2 views
0

Une page Web a quelques liens:jQuery: Comment trouver un élément dans le gestionnaire d'événements hashchange?

<a href="#example-hash-1" class="link">example-1</a> 
<a href="#example-hash-2" class="link">example-2</a> 
<a href="#example-hash-n" class="link">example-n</a> 

En cliquant tout sur eux, il court un événement de hashchange et nous allons le gérer:

$(window).on('hashchange', function(event){ 

    // Is it possible (inside this handler) to find out which of a.link was clicked? 

}); 

Ou, est-il une autre façon de le faire ?

+0

Pour votre cas [event.target] (https://api.jquery.com/event.target/) le fera. –

+0

et 'location.hash;'? c'est-à-dire: 'var hash = location.hash;' –

Répondre

0

Je pense que vous pourriez utiliser onclick comme un attribut dans la balise ou vous pourriez utiliser l'événement .click() via jQuery. Je pense que cela va accomplir la même chose que la fenêtre sur hashchange.

0

event.target va contenir quel élément a déclenché l'événement.

Je ne peux pas vérifier pour le moment, mais je crois que this se lie également.

0

essayez ceci:

$(window).on('hashchange', function(event){ 

    var hash = location.hash; 
    var $this = $(hash); 
    alert($this.html()); 
}); 
0

Alors que je crois ajoutais auditeurs cliquez sur les liens réels serait le mieux, vous pouvez rechercher également l'élément qui aurait changé le hachage en tant que tel:

$(window).on('hashchange', function(event){ 
    $('a[href$='+window.location.hash+']').action(); 
});