2010-01-08 6 views
1

J'ai rencontré du code qui utilise jQuery, similaire au suivant.Question du sélecteur jQuery

NAMESPACE = { 
    propertyA : $("#selector-a"), 
    propertyB : $("#selector-b") 
} 

$(NAMESPACE.propertyA).click(function(){ 
    // ... 
}); 

Cela semble fonctionner, même si la syntaxe pour attacher le gestionnaire de clic doit être.

NAMESPACE.propertyA.click(function(){ 
    // ... 
}); 

Est-ce que jQuery ont construit dans la capacité à résoudre ce qui suit, en dépit de la syntaxe incorrecte?

$($("#my-selector")).click ... etc. 

Répondre

1

Oui, il traitera cela si nécessaire. Vous ne devriez vraiment pas utiliser cette syntaxe si c'est sous votre contrôle. J'ai testé contre ce qui suit et obtenu les mêmes résultats avec les deux:

$($("li")).click(function(e){ 
    alert(e.target); 
}); 

//-- 

$("li").click(function(e){ 
    alert(e.target); 
}); 
+0

L'utilisation de cette syntaxe n'était pas ma décision, et je comprends que ce n'est pas souhaitable. – jerome

+0

@jerome: Pas de sang, pas de faute :) Je comprends avoir à travailler avec le code compliqué des autres. – Sampson

3

Oui. jQuery permet comme arguments de la $:

  • Un sélecteur CSS
  • Elément DOM
  • un réseau d'éléments DOM
  • Un objet jQuery
  • Une fonction (qui sera appelé dans le cadre de $.ready())

Tous ces éléments sont une syntaxe valide pour autant que jQuery concerne, bien que la performance peut souffrir dans certains de ces cas.

Étant donné que vos NAMESPACE.properties sont des éléments jQuery, cela fonctionnera.