2010-12-13 55 views
2

Les travaux suivants en FF, Chrome et Safari:Comment changer l'opacité d'une image dans IE? - jQuery, CSS

$('#delete_img').click(function(e) { 
      var offset = $(this).offset(); 
      $(this).parent().parent().fadeTo("slow", 0.30); 
      $(this).parents("li").children("img").css({ 'border' : '3px solid #f6f6f7' }); 
      e.stopPropagation(); 
}); 

Mais ne pas IE8 (je ne suis pas tester même dans 7 et versions antérieures).

Comment puis-je obtenir cette fonctionnalité dans IE8?

Modifier: le code HTML ici A la demande:

<div id="slider-code"> 
     <a class="buttons prev" href="#"></a> 
     <div class="viewport"> 
      <ul class="overview">   
       <li><img src="images/red-stripe.jpg" /></li> 
       <li><img src="images/red-stripe-bw.jpg" /></li> 
       <li><img src="images/red-stripe-red.jpg" /></li>    
       <li><img src="images/red-stripe-dark.jpg" /></li> 
       <li><img src="images/red-stripe.jpg" /></li> 
       <li><img src="images/red-stripe-red.jpg" /></li> 
       <li><img src="images/red-stripe-dark.jpg" /></li>   
      </ul>  
     </div> 
     <a class="buttons next" href="#"></a> 
    </div> 

    <div style="clear:both"></div> 

    <div id="edit-image-nav"> 
     <div id="add_comment"><img src="images/comment-icon.png" /></div> 
     <div id="like"><img src="images/paint-icon.png" /></div> 
     <div id="delete_img"><img src="images/delete-icon.png" /></div> 
    </div> 

S'il vous plaît noter que ce qui se passe est, lorsque vous cliquez sur l'une des icônes de la « modifier l'image-nav » div (qui sont superposés sur les images dans l'UL ci-dessus onHover), il a des fonctionnalités différentes. Pour les autres icônes, cela fonctionne. Pour le #delete_img cependant, ce n'est pas le cas.

+1

L'ID 'delete_img' est-il répété? –

+0

Répété n'importe où dans le code? Serait-ce la cause? J'ai juste cherché le fichier JS et il n'est pas répété. – marcamillion

+0

dans votre balisage, je veux dire, les ID doivent être uniques. –

Répondre

1

Il ne semble être une erreur dans votre code, mais si cela ne fonctionne vraiment pas, essayez ceci:


$('#delete_img').click(function(e) { 
      var offset = $(this).offset(); 
      $(this).parent().parent().parent().children("img").fadeTo("slow", 0.30, function() { 
        $(this).css('opacity', 0.3); 
      }); 
      $(this).parents("li").children("img").css({ 'border' : '3px solid #f6f6f7' }); 
      e.stopPropagation(); 
});

+0

Non ... ne fonctionne pas. BTW, je ne suis pas sûr si cela change quelque chose, mais j'essaie de changer l'opacité d'une image. '$ (this) .parent(). parent()' est une image. – marcamillion

+0

J'ai édité du code, donc ça a l'air bizarre, mais peut-être que ça marchera ... –

+0

Mec ... génial. Cela marche. Alors pourquoi est-ce arrivé dans IE8 et non Safari, Chrome ou FF? Mis à part le fait que IE suce? – marcamillion

1

image ne peut pas être un parent (bien, il est très peu susceptible d'être) si votre sélecteur est faux. Il est difficile de dire ce qu'il devrait être sans code HTML pertinent, mais vous pouvez essayer (cela fonctionnera si votre bouton de suppression est deux niveaux vers le bas de la cible à supprimer):

$(this).parent().parent().find("img").fadeTo("slow", 0.30); 

La méthode fadeTo sur l'image fonctionne très bien avec IE8. Si cela ne fonctionne pas, envoyez votre code HTML.

Sinon, assurez-vous que votre balise img a une hauteur et une largeur spécifiées sinon IE n'appliquera pas de changement d'opacité à l'élément car il "n'a pas de disposition" - pour des explications détaillées, voir http://www.satzansatz.de/cssd/onhavinglayout.html.