2011-04-01 10 views
6

J'ai un problème où $("#register") returns null, mais jQuery("#register") renvoie l'objet correctement.

Cela peut être une valeur mille mots:

Chrome inspector expressing the problem

Comme vous pouvez le voir dans l'expression Regarder tout fonctionne comme prévu (jQuery === $ returns true) Mais dans la console, il ne fonctionne pas. Et dans le code, il ne le fait pas non plus, car la chaîne $("#register").validate ne fonctionne pas.

Peut-être qu'il doit faire quelque chose avec $script.js chose?

+0

Vous utilisez plusieurs cadres? –

+0

peut-être vous avez une certaine fonction '$()' –

+0

Le problème est maintenant résolu - je pense que son inspecteur Web Chrome qui remplace $ –

Répondre

1

Je suis désolé de revenir dans 5 minutes et dire que le code fonctionne. Euh

C'est juste que $ est quelque chose que l'inspecteur Web remplace.

$ script.js ne provoque pas de conflits.

> jQuery.noConflict() 
function (a,b){return new d.fn.init(a,b,g)} 
> $ 
function() 
    { 
     return document.getElementById.apply(document, arguments) 
    } 

Il est le problème de l'inspecteur chrome :)

+0

pouvez-vous expliquer comment vous pouvez résoudre ce problème? –

+0

@PrAtikLochawala Résoudre quoi? Cela ne fonctionne que lorsque vous utilisez les outils de développement Chrome. Il a sa propre signification pour $ variable: [$ (selector) docs] (https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#queryselector). Si vous appelez jQuery.noConflict(), vous pouvez l'assigner à une autre variable et utiliser cette variable au lieu de $ afin qu'elle ne soit pas en conflit avec les outils de développement de chrome. –

8

Peut-être un autre framework javascript que vous utilisez détourne la fonction $(). Vous pouvez jeter un oeil à jQuery.noConflict() pour obtenir des conseils sur l'utilisation de jQuery avec d'autres frameworks.

1

plugin jQuery correctement écrit peut être cause de ce problème

1

Il arrive parce que les deux fichiers JavaScript déclarent fonctionner

$
1

Afin d'éviter tout conflit, avant d'utiliser jQuery, vous devez appeler jQuery.noConflict();. Ensuite, utilisez l'objet "jQuery" au niveau du script de base chaque fois que vous avez besoin de l'utiliser, bien qu'internes à une telle méthode, vous pouvez utiliser $ plutôt que jQuery.

En d'autres termes, vous devez écrire:

jQuery.noConflict(); 
jQuery.ready(function() { 
    // do stuff 
    $('#btn').button(); 
}); 

Notez que l'intérieur prêt, je peux utiliser à nouveau $ sans se soucier des autres conflits.

Questions connexes