2010-07-06 7 views
2

J'ai une petite question à propos des plugins jQuery, j'espère que quelqu'un aura des conseils. Je travaille avec un plugin jQuery qui a fonctionné comme prévu, mais au cours des deux derniers jours, nous avons mis à jour de jQuery 1.1.4 à 1.4.2.
Après beaucoup de débogage, j'ai pu se rendre compte que dans le vieux plug-in, les sélecteurs sont écrits comme suit:Mise à niveau des plugins jQuery vers la dernière version

$('img[@id&=myImage]').each ... 

Une fois que nous sommes passés à la dernière version de jQuery, j'ai commencé à obtenir des erreurs JavaScript comme suit:

uncaught exception: Syntax error, unrecognized expression: [@id&=myImage] 

Comme vous pouvez le voir, le sélecteur comprend un symbole « @ » (que je crois est celui qui provoque l'erreur) et après avoir consulté la documentation jQuery sur tous les différents types de sélecteurs, je ne pouvais pas trouver si c'était correct ou non, étant donné que cela a fonctionné avant et maintenant il ne fonctionne pas.

À ce stade, je dois déterminer si je peux utiliser l'ancien plugin avec la nouvelle version de jQuery ou si je dois trouver une solution alternative.

J'apprécierais n'importe quel conseil.
Merci

+0

Il suffit de supprimer le '@' devrait le faire. Mais le '&' dans votre expression, êtes-vous sûr que c'est le code? Ce n'est pas '^ =' ou '~ =' ou '$ ='? – artlung

+0

Voir la documentation actuelle du sélecteur d'attributs ici: http://api.jquery.com/category/selectors/ – artlung

+0

Oui, c'est une esperluette, et oui, d'après la documentation, ça ne devrait pas être là, mais ça a fonctionné avant, donc j'ai fait pas question. J'ai supprimé toutes les instances du symbole "@" et je n'ai pas d'erreur mais le plugin ne fonctionne pas du tout. – jnkrois

Répondre

4

Le @ pour attribute selectors était removed in jQuery 1.3, prenez-le, comme ceci:

$('img[id^=myImage]').each(...); 

Aussi je ne suis pas sûr de ce que &= aurait mentionné, je pense que vous voulez un de l'autre attribute selectors here, éventuellement starts-with (^=) ou ends-with ($=)?

+0

Merci, c'est ce dont je n'étais pas sûr, j'ai enlevé le "@" de chaque sélecteur, mais cela fait que le plugin cesse de fonctionner tous ensemble. – jnkrois

+0

@jnkrois - Quel est le balisage que vous utilisez? Ce serait '# myImage' s'il s'agissait de * simplement * l'ID, mais il devait avoir un début avec, se termine par, contient, etc ... si vous posiez le balisage de l'élément, ce serait plus facile à dire. –

+0

Merci Nick, je n'aimerais vraiment pas publier un peu de code, parce que je ne le comprends pas très bien, donc je ne vais pas perdre votre temps, mais j'apprécie votre aide. Merci – jnkrois

2

Tout se résume aux avantages et aux inconvénients de la mise à niveau.
Plus pour la mise à niveau sont:

  1. La nouvelle version a certainement beaucoup d'améliorations en termes de vitesse /performances et aussi des corrections de bugs.
  2. Les nouveaux plugins de jQuery nécessiteraient probablement la nouvelle version et à long terme, vous pourriez en bénéficier.

Moins:

  1. Vous devez prendre soin de tous les plug-ins qui se brisent dans la nouvelle version . Comme celui en question ( je suppose que vous pourriez juste prendre le symbole @ et cela devrait fonctionner).
  2. Combien de ces plugins vous utilisez et quelle est la taille actuelle de votre code java qui peut rompre avec cette mise à niveau . Le jQuery release comme this et documentations this pourrait être un point de départ

Vous pouvez prendre une décision fondée sur l'estimation des coûts et le temps de ce qui précède. S'il y a seulement 1 ou 2 plugins qui ont besoin d'un peu de peaufinage, je dirais certainement aller de l'avant et mettre à niveau.
Cependant, si vous avez une douzaine de plugins qui cassent et que vous devrez réécrire presque 50 - 60% de votre code frontal, alors vous avez un appel difficile à faire :)

Questions connexes