J'ai l'index.html suivant:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript">
</script>
<script type="text/javascript">
jQuery(document).ready(function($) {
console.log(foo); // jQuery assumes foo is an id?
});
</script>
</head>
<body>
<div id="foo">i'm a div</div>
</body>
</html>
3 Réponses :
Cela n'a rien à voir avec JQuery. P>
Ceci est parce que les éléments nommés (éléments avec un puisque votre ID code> ou nom code> attribut) deviennent propriétés de l'objet de la fenêtre. P>
console.log (foo) code> est identique à console.log (fenêtre.foo); code> p> p>
div code> est un élément nommé ( id = "foo" code>), il est ajouté à fenêtre code>. p>.
Pas dans chaque navigateur cependant et ce n'est pas une partie de la spécification.
jQuery ne suppose pas que, mais plutôt JavaScript. Votre Si vous l'avez renommé code> bar code>, vous seriez en mesure de référencer Notez que une telle utilisation est fronçée car il n'est pas clair ce que vous faites dans le code sans référencer le HTML. En utilisant FOO code> n'est pas noté, il doit donc être un identifiant ou undefined. L'élément avec ID FOO code> se trouve être dans la portée de votre script, l'élément identifié par elle est enregistré. P>
bar code> car il s'agirait d'un identifiant de niveau supérieur. P>
document.getelementByID (...) code> ou une variante de celle-ci est généralement préférable car il est clair ce que vous faites. P>
Ce n'est pas un comportement de jQuery, c'est (à l'origine) un comportement d'Internet explorateur. IE a toujours créé des variables globales pour chaque élément DOM comportant un attribut code> ID code>. La variable est nommée d'après le ID code> et références de l'élément DOM. Dernièrement, d'autres navigateurs ont suivi la poursuite. P>
Pas spécifique à JQuery, mais JavaScript. Je n'ai jamais remarqué cela avant la bonne question. Voici un violon qui démontre ce qui précède: jsfiddle.net/blade0rz/rjwpa/1
C'est la recherche
window.foo code>, qui est l'élément par ID.Ceci est une bonne démonstration de la raison pour laquelle
id code> doit être unique dans le DOM et comment le comportement serait indéfini.