2010-02-27 5 views
0

Quelqu'un peut-il me dire pourquoi l'exemple suivant fonctionne dans Firefox mais pas dans IE 8? Seul le contenu_1 fonctionne correctement dans IE 8.jQuery 1.3.2 et IE 8 problème avec hide() et show()

Thx vijey.

<script type="text/javascript"> 

$(function(){ 
    $("#sortable").sortable({handle: '#dragable'}); 
}); 


$(function(){ 

    var v; 

    $('div[id^="content_"]').hover(

     function() { 

     v = $(this).attr('id'); 
      $('#'+v+' #menu').show(); 
      $('#'+v+' #dragable').show(); 
     }, 
     function() { 
      $('#'+v+' #menu').hide(); 
      $('#'+v+' #dragable').hide(); 
     } 
    ); 

}); 

</script> 


<body> 

<div id='sortable'> 

    <div id='content_1'> 

     <div id='menu' style='display:none;'> 
      <div>edit</div> 
      <div>add</div> 
      <div>delete</div> 
     </div> 

     <div id='content'>Content_1</div> 

     <div id='dragable' style='display:none;'>[drag]</div> 
    </div> 




    <div id='content_2'> 

     <div id='menu' style='display: none;'> 
      <div>edit</div> 
      <div>add</div> 
      <div>delete</div> 
     </div> 

     <div id='content'>Content_2</div> 

     <div id='dragable' style='display:none;'>[drag]</div> 
    </div> 





    <div id='content_3'> 

     <div id='menu' style='display: none;'> 
      <div>edit</div> 
      <div>add</div> 
      <div>delete</div> 
     </div> 

     <div id='content'>Content_3</div> 

     <div id='dragable' style='display: none;'>[drag]</div> 
    </div> 

</div> 



</body> 

Répondre

2

Les ID doivent être uniques dans une page (spécification html [1]); vous avez 2 #menu, #content, etc. Modifiez-les par ex. <div class="menu"> et votre sélecteur à .menu - cela devrait fonctionner.

Soit dit en passant, vous pouvez simplifier votre rappel de vol stationnaire avec find [2]:

function() { 
    $(this).find('.menu, .dragable').show(); 
} 

1: http://www.w3.org/TR/html401/struct/global.html#h-7.5.2
2: http://api.jquery.com/find/

+0

thx beaucoup, cela fonctionne très bien ;-) – vijey

0

Vous ne pouvez pas avoir plusieurs éléments avec le même ID, il est HTML non valide, les identifiants doivent être uniques. Vos éléments de menu doit être une classe au lieu d'une carte d'identité, comme ceci:

<div id='content_1'> 

    <div class='menu' style='display: none;'> 
     <div>edit</div> 
     <div>add</div> 
     <div>delete</div> 
    </div> 

    <div class='content'>Content_2</div> 

    <div class='dragable' style='display:none;'>[drag]</div> 
</div> 

Et jQuery comme ceci:

$(function(){ 
    $('div[id^="content_"]').hover(
     function() { 
      $(this).find('.menu, .dragable').show(); 
     }, 
     function() { 
      $(this).find('.menu, .dragable').hide(); 
     } 
    ); 
}); 
+0

thx beaucoup, il fonctionne bien ;-) – vijey