2010-08-23 4 views
0

J'utilise jquery pour masquer et afficher des divs, en fonction des choix de boîte de sélection. Quand je change la valeur de la boîte de sélection, l'action qui devrait arriver, mais la div qui est montrée est en dessous de la div suivante (l'arte de la div étant "poussée" vers le bas).Lorsque j'utilise la fonction .hide de jquery pour basculer certains divs, les divs se superposent après divs (seulement dans ie8)

c'est le code jquery:

<script type='text/javascript'> 
$(document).ready(function(){ 
$('#alldates').hide(); 
$('#dateselect').hide(); 
$('#dateselectchoices').change(function(){ 
$('#' + this.value).show().siblings().hide(); 
}); 
$('#dateselectchoices').change(); 
}); 

$(document).ready(function(){ 
$('#nocountyselect').hide(); 
$('#countyselect').hide(); 
$('#regionselect').hide(); 
$('#countyselectchoices').change(function(){ 
$('#' + this.value).show().siblings().hide(); 
}); 
$('#countyselectchoices').change(); 
}); 
</script> 

Et le code html qui a suivi:

<div class="tbl_container"> 
<span class="tbl_left">Registered Date Range:</span> 
<span class="tbl_right"><select id='dateselectchoices' name='$rangename'><option value='alldates'>All Dates</option> 
<option value='dateselect'>Specify Date Range</option> 
</select> 

<div id='boxes'> 
<div id='alldates'></div> 
<div id='dateselect'><span style='width:80px; display:inline-block;'>Start Date: </span><span style='display:inline-block;'> 
<input type='text' class='input-medium' name='rangestart' id='rangestart' />&nbsp;<a href='#' onClick=\"cal.select(document.getElementById('rangestart'),'startanchor','yyyy-MM-dd'); return false;\" name='startanchor' id='startanchor'> 
<img src='http://www.ampltek.net/marn/calendar.jpg' border='0' /></a></span><br/> 
<span style='width:80px; display:inline-block;'>End Date: </span><span style='display:inline-block;'> 
<input type='text' class='input-medium' name='rangeend' id='rangeend' />&nbsp;<a href='#' onClick=\"cal.select(document.getElementById('rangeend'),'endanchor','yyyy-MM-dd'); return false;\" name='endanchor' id='endanchor'> 
<img src='http://www.ampltek.net/marn/calendar.jpg' border='0' /></a></span></div> 
</div> 
</span> 
</div> 

<div class="tbl_container"> 
<span class="tbl_left">County/Region:</span> 
<span class="tbl_right"><select id='countyselectchoices' name='countyselectchoices'> 
<option value='nocountyselect' selected='selected'>Any</option> 
<option value='countyselect'>County</option> 
<option value='regionselect'>Region</option> 
</select> 
<div id='boxes2' style='display:inline-block; -moz-inline-stack; zoom: 1; *display: inline;'> 
<div id='nocountyselect'></div><div id='countyselect'><?php countySelect(countychoice); ?></div><div id='regionselect'><?php regionSelect(regionchoice); ?></div> 
</div></span> 
</div> 

La seconde de ces boîtes de sélection ne crée pas une option, car la boîte elle montre affiche dans en ligne avec. Des pensées? Tout fonctionne bien dans Firefox 3/Chrome ...

+1

N'est-ce pas ainsi que vous vous attendez à ce qu'il se comporte? http://jsfiddle.net/aabxe/ c'est exactement votre code (en remplaçant les parties php par du texte brut) et cela semble fonctionner – davehauser

Répondre

0

J'ai récemment eu des problèmes similaires avec une page Web. J'ai entendu IE8 n'est pas compatible avec jquery, bien que cela semble étrange.

J'ai résolu mon problème en mettant cette ligne dans les étiquettes d'en-tête.

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />