Bug sous ie et firefox, jquery

Résolu/Fermé
tokie-03 Messages postés 9 Date d'inscription lundi 22 octobre 2012 Statut Membre Dernière intervention 14 février 2013 - 22 oct. 2012 à 16:55
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 - 23 oct. 2012 à 10:56
Bonjour,


j'ai un petit problème sur mon site, en fait j'ai utilisé des méthodes en jquery pour pouvoir créer des effets, ça marche bien sur chrome mais pas sur firefox et ie.
aidez moi svp, ça fait des heures que j'essaye des trucs mais j'arrive pas du tout :(

une partie du codage :

$('#m1').mouseenter(function(){

document.getElementById('m1').style.cursor='pointer';

if ($("#m1").css('background-image') ==
'url(http://www.*****.fr/test/BTNINSTALLATION.png)'){


$('#cadre1').fadeIn("slow");
}

else{

document.getElementById("m1").style.backgroundImage =
'url("http://www.****.fr/test/BLANC-VERT.png")' ;
$('#cadre1').hide();
}
});



$('#m1').mouseleave(function(){

document.getElementById('m1').style.cursor='pointer';

if($("#m1").css('background-image') ==
'url(http://www.****.fr/test/BTNINSTALLATION.png)'){
document.getElementById("m1").style.backgroundImage =
'url("http://www.****.fr/test/BTNINSTALLATION.png")';
}
else{
document.getElementById("m1").style.backgroundImage = 'url("http://www.****.fr/test/BLANC.png")';

}
});


$('#m1').click( function(){

if ($("#m1").css('background-image') !=
'url(http://www.***.fr/test/BTNINSTALLATION.png)'){
$('#m1').css('background-image',
'url(http://www.****.fr/test/BTNINSTALLATION.png)');

$('#m1').css('color', 'white');

$('#cadre1').css('background-image', 'url(http://www.****.fr/test/INSTALLATION.png)').fadeIn("slow");

}
});


le problème est quand quand je clique sur "m1" ce qui rend le background-image BTNINSTALLATION ensuite j'enlève ma souris ça passe en BLANC c'est à dire le esle de mouseleave alors que logiquement ça doit rester le background-image BTNINSTALLATION

A voir également:

3 réponses

Utilisateur anonyme
22 oct. 2012 à 17:18
Bonjour

Ajoute un alert ($("#m1").css('background-image')); au début de ton mouseleave. Tu verras ce qu'il y a vraiment, et ça devrait te donner une idée de ce qui cloche dans ton test.
0
tokie-03 Messages postés 9 Date d'inscription lundi 22 octobre 2012 Statut Membre Dernière intervention 14 février 2013
22 oct. 2012 à 17:29
merci pour ta réponse

n'importe quoi, quand c'est BLANC-VERT ça me mets BLANC-VERT et quand c'est BTNINSATALLATION ça me mets bien BTNINSTALLATION (aprés avoir cliqué) et juste après ce message ça le change en BLANC :/
0
Utilisateur anonyme
22 oct. 2012 à 23:55
Je n'y connais pas grand chose en jquery, mais je trouve bizarre que dans le onclick tu modifies le background avec la méthode css de $('#m1') :
$('#m1').css('background-image', 'url(...

Alors que dans le onleave, tu utilises une méthode complètement différente :
document.getElementById("m1").style.backgroundImage = 'url(":...

Pas sûr que ce soit équivalent, mais comme je te l'ai dit, je ne suis pas expert dans ce domaine.
0
tokie-03 Messages postés 9 Date d'inscription lundi 22 octobre 2012 Statut Membre Dernière intervention 14 février 2013
23 oct. 2012 à 09:15
D'accord, je n'ai toujours pas résolue ce problème mais merci quand même
0
J'ai reproduit ton code pour voir et j'ai eu le même problème.
Je t'avais demandé de mettre un alert ($("#m1").css('background-image')); : l'as-tu vraiment fait ? As-tu vraiment regardé la différence de comportement entre Chrome et FF (je n'ai pas essayé IE)
Chrome affiche
url(http://www.****.fr/test/BTNINSTALLATION.png)
Alors que FF affiche
url("http://www.****.fr/test/BTNINSTALLATION.png")
Il y a des " en plus.
Donc ton test ne convient pas

Modifie tous tes tests :
if(($("#m1").css('background-image') ==  
'url(http://www.****.fr/test/BTNINSTALLATION.png)')||($("#m1").css('background-image') ==  
'url("http://www.****.fr/test/BTNINSTALLATION.png")'))

(attention, quand tu testes !=, il faut mettre && à la place de ||
0
tokie-03 Messages postés 9 Date d'inscription lundi 22 octobre 2012 Statut Membre Dernière intervention 14 février 2013
23 oct. 2012 à 10:54
merci beaucoup, alors j'ai tout modifié par ça :
$('#m1').mouseenter(function(){
document.getElementById('m1').style.cursor='pointer';

if ((document.getElementById("m1").style.backgroundImage == 'url("http://www.***.fr/test/BTNINSTALLATION.png")')
||
(document.getElementById("m1").style.backgroundImage == 'url(http://www.***.fr/test/BTNINSTALLATION.png)')){


$('#cadre1').fadeIn("slow");
}else{
//if($("#m1").css('background-image') == 'url(http://www.****.fr/test/BLANC.png)'){

document.getElementById("m1").style.backgroundImage = 'url("http://www.***.fr/test/BLANC-VERT.png")' ;
$('#cadre1').hide();
}

en fait sur chrome il prends le lien sans " " et sur mozilla faut mettre " " dans le lien donc pour faire cela j'ai rajouté une condition avec || et quand je fais mon .click je change le || par &&.
merci bien et bonne journée.
0
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
Modifié par maka54 le 23/10/2012 à 10:51
C'est du grand n'importe quoi ce code ....


mouseenter, mouseleave, click .... c'est le merdier, et les tests de background n'en parlons meme pas

Voilà une piste que devrais t'aider


css :
#m1{ 
background-image:url(image par défaut); 
} 

#m1:hover{ 
background-image:url(image lorsque le pointeur est sur l'element); 
} 


#m1.click{ 
background-image:url(image lorsque  l'element a été cliqué); 
} 

#m1.click:hover{ 
background-image:url(image lorsque  l'element a été cliqué et que le pointeur est sur l'element); 
} 



js :

$('#m1').click( function(){  
 $(this).addClass('click'); 
});
0
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
23 oct. 2012 à 10:56
et pour le cadre : #cadre1

$('#m1').hover(function(){
$('#cadre1').fadeIn("slow");
}.function(){
$('#cadre1').hide();
});
0