Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/01/2012, 14h17   #1
Invité régulier
 
Inscription : novembre 2010
Messages : 37
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 37
Points : 7
Points : 7
Par défaut Conflit entre deux codes js.

Bonjour tout le monde,

Avant toute chose, je vous souhaite une bonne année pleine de joie de bonheur et de prospérité.

Je suis encore et toujours dans l'élaboration de mon formulaire, qui ne va pas tardé à ce conclure. Grace à vous j'ai pu résoudre pas mal de soucis en .js qui est un langage que je ne contrôle pas du tout. J'essaye de bidouiller du code de temps à autre mais lorsque je me heurte à un problème qui nécessite de savoir coder, là je flanche.

Voici mon problème:

Je dispose de selects stylisés avec un plugin Jquery appelé (selectzor). Jusque là tout va bien. Mon souhait, serrait de faire afficher une div différente à chaque <option> choisie, en l’occurrence dans mon cas il y en a deux. La encore ce n'est pas un gros problème car les sujets sur ce genre de demande pullule sur la toile, mais là où ça devient un peut plus délicat, c'est que mes selects utilisent un plugin, donc le code que j'utilise pour afficher/cacher mes divs n'est plus fonctionnel.

Voici un exemple, sans style (j'affiche/cache un id), tout fonctionne correctement : ICI

Maintenant je rajoute la class="selectzor" (qui fait appel au plugin) à ma select, le style est bien appliqué mais le code n'est plus fonctionnel: ICI


Voici le fichier js du plugin selectzor: ICI

Pourriez-vous m'aider ?
Merci
Shakuro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 15h45   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Bonjour,
tu ne peux plus traiter de la même façon ta fonction, avec la surcouche que tu utilises le this passé à la fonction représente l'objet jQuery qui est visible à l'écran.

1/ remets l'événement onchange sur le SELECT
2/ passes en paramètre l'ID du SELECT, sans utilisation de this.id
Code :
1
2
3
4
<select id="ddlNames"  class="selectzor" style="width: 82px;" onchange="affiche('ddlNames');">
    <option value="portrait">Portrait</option>
    <option value="paysage">Paysage</option>
</select>
3/ dans la fonction tu récupères l'objet via l'ID en paramètre
Code :
1
2
3
function affiche( nom_id){
  var liste = document.getElementById( nom_id);
  // etc
une autre façon de faire est de juste changer la récupération de l'objet dans la fonction
Code :
1
2
3
4
5
6
7
function affiche( objet){
  // recup via l'objet jQuery et l'attribute 'parent'
  var liste = document.getElementById( $( objet).attr('parent'));
  for (var i = 0; i < liste.options.length; i++) {
    document.getElementById(liste.options[i].value).style.visibility = i != liste.selectedIndex ? 'hidden' : 'visible';
  }
}
et dans ce cas l'appel de la fonction sur le SELECT reste affiche(this)
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/01/2012, 16h44   #3
Invité régulier
 
Inscription : novembre 2010
Messages : 37
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 37
Points : 7
Points : 7
Merci pour cette réponse détaillée, je ne pouvais pas avoir mieux

J'ai opté pour la deuxième méthode, je ne connaissais pas cette méthode de récupération, jusqu'aujourd'hui (et cela est du à mon manque d'experience) je ne savais que récupérer de cette mannière :

Code :
document.getElementById('nom_id');
Merci encore, bonne fin de journée. Problème résolu.
Shakuro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h39.


 
 
 
 
Partenaires

Hébergement Web