Vous essayez d'accéder à l'élément avant d' existe (JavaScript est exécuté en ligne avec l'analyse/rendu HTML). Vous pouvez utiliser l'événement ready
que jQuery fournit que Pekka et Mike ont fait remarquer, ou tout simplement vous assurer que vous essayez d'accéder à l'élément après il existe:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
</head>
<body>
<a id="prevlink" href="#">test</a>
<script type="text/javascript">
// By this time we get here, it exists.
$('#prevlink').click(function() {
alert("Test");
});
</script>
</body>
</html>
L'ancien (en utilisant un événement ou ready
similaire) est plus "discret" et c'est très utile lorsque vous travaillez avec de grandes équipes, où vos concepteurs HTML et vos codeurs JavaScript sont généralement différents. Ce dernier se produit plus tôt (pas de petit écart dans le temps après l'apparition du lien et avant que vous ne connectiez l'événement click), tout comme what the Google Closure team recommend pour l'accrochage des gestionnaires d'éléments.
Même lorsque vous utilisez la deuxième méthode, vous pouvez garder votre JavaScript et HTML raisonnablement séparés, en veillant à ce que l'étiquette script
est juste un appel à mettre en place l'élément et n'a pas la logique réelle de son propre.
Cela fera une bonne question d'entrevue technique - "Que fait ce code?" –
@Mike: Quand j'ai lu la première partie de votre commentaire, je n'ai pas pu m'empêcher de rire. "Suis-je fou?" : D –