Se connecter avec
S'enregistrer | Connectez-vous

[js]problèmes avec jquery

Dernière réponse : dans Programmation

Bonjour, j'utilise la librairie jquery pour développer mon site, mais je rencontre quelque problèmes.

1. Les caractères spéciaux et ajax

Quand je récupère du texte via ajax et que je l'affiche sur ma page, les caractères spéciaux (é, è, à, etc.) ne s'affiche pas. A la place j'ai un horible point d'interrogation.

2.Action sur le code modifié

Il me semble que jquery ne peux gerer le xhtml qui a été modifié (même s'il l'a lui-même modifié).
Je m'explique : si j'ajoute une classe à un élément, impossible après d'appeler une fonction en fonction de cette nouvelle classe. exemple :
  1. $(".block_lien").mouseover(function()
  2. {
  3. $(this).removeClass('block_lien');
  4. $(this).addClass('block_lien_active');
  5. });
  6.  
  7. $(".block_lien_active").mouseout(function()
  8. {
  9. $(this).removeClass('block_lien_active');
  10. $(this).addClass('block_lien');
  11. });


La 2e fonction ne sera jamais appelée.
Pas moyen non plus d'intervenir sur du xhtml qui a été ajouter via ajax.
Ces 2 problèmes m'empechent de de profiter de cette librairie qui est pourtant si utile. J'espère que je trouverai réponse à mes questions.

Autres pages sur : problemes jquery

Lassé par la pub ? Créez un compte

Je ne connais pas trop JQuery. Cependant...

Pour ton premier problème, il s'agit simplement d'un problème d'encodage. Essaye de mettre un petit utf8_encode pour toutes les sorties PHP.

Pour ton second problème, je n'ai pas compris ce que tu veux faire... Par contre, les dollars en début de ligne sont normaux ? Ca ressemble à un bizarre mélange de JS et de PHP là...

Merci, le premier problème est résolu. (en ce qui concerne les $, c'est en fait le nom de la fonction principale de jquery)

Mais le second est bien plus gênant : je ne peux agir (via jquery) sur du code xhtml qui a été modifié après le chargement de la page. Par exemple, si j'ai un bloc <p></p>, je peux inserer une image dedans, jusque là pas de problème. Mais cette image, si elle est bien visible, semble ne pas exister pour jquery! Je ne peux ni la supprimer, ni la modifier, ni savoir si l'on clique dessus. Et c'est pareil avec tous les autres éléments rajouté après le chargement de la page.

Ne serait-ce pas lié à un problème d'évaluation de Javascript ? Voici une petite fonction qui te sera forte utile :

  1. // Fonction d'évaluation de nos scripts issus des requêtes Ajax.
  2. function evalJavascript(div)
  3. {
  4. var scripts = div.getElementsByTagName('script');
  5.  
  6. for(i=0 ; i < scripts.length ; i++)
  7. {
  8. var s = scripts[i];
  9. eval(s.innerHTML);
  10. }
  11. }


Demande l'évaluation après l'appel à ta fonction Ajax.

En espérant avoir bien compris ce que tu demandais...

Je ne suis pas sur d'avoir bien compris le code que tu me proposes; Il sert à executer le code javascript se trouvant dans un div donné c'est ça?

En fait le problème n'est pas qu'il ne peut executer du code après un appel ajax, enfin pas exactement.

Voila comment semble fonctionner jquery :
Une fois que la page est chargée, je peux via jquery modifier le xhtml qui a été chargé. Je peux ajouter un bloc, savoir quand on clique sur un lien, ajouter ou supprimer des classes, ou même faire un requête ajax. Mais je ne peux le faire que pour les éléments qui ont été chargés aux départ. Tous les éléments que j'ai rajouté ensuite, que se soit via jquery ou suite à une requete ajax, je ne peux les modifier. Jquery ne les reconnais pas.

Par contre, si dans le code que j'ajoute via une requete ajax, il y a du code jquery, ce code là pourra agir sur tous les éléments qui sont présent à ce moment la sur la page. Mais de nouveau pas sur ce que je pourrais rajouter après.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde