2010-11-04 15 views
1

J'ai un code jquery ici qui fonctionne très bien dans firefox mais quand je le test dans ie6, je ne le vois pas du tout fonctionner (le div n'est pas montré).Pourquoi ce code jquery ne fonctionne-t-il pas dans ie6?

ici est mon html

<b>Calendar:</b> <select name="CalendarId" id="calendar_list"> 
<option value="1">Vacation</option><option value="2">Internal Travel</option> 
<option value="13">ER</option><option value="33">PMO Calendar</option> 
</select> 

<span style="display: none;" id="calendarlabel"></span> 

    <hr> 

    <div id="location" style="display: none;"> 
    <label>Travelling to:</label> <select id="location_list" name="TechnicalCentreId">  
<option></option> 
<option value="1">Bangalore</option> 
<option value="2">Chennai</option> 
</select> 
    </div> 

voici mon javascript:

$('#calendar_list').live('change', function() { 
    var calendarId = $(this).val(); 
    if (calendarId == 2) { 
     $("#location").show(); 
    } 
    else { 
     $("#location").hide(); 
    } 
}); 

D'abord, personne ne sait pourquoi ce code ci-dessus ne fonctionne pas dans IE6 mais soyez bien dans tous les autres browswers?

Deuxièmement, comment puis-je déboguer ce qu'il semble être seulement un problème dans IE6 (équivalent besoin Firebug pour voir ce qui se passe)

+0

La question serait plus facile de répondre si vous présentez quelques balises, y compris #calendar_list et #location –

+0

@Dr. Molle - J'ai ajouté mon html ainsi que le javascript – leora

Répondre

2

IE ne bouillonne pas l'événement 'change' correctement, donc vous ne pouvez pas utiliser live ('change').

Au lieu de cela, lier votre comportement à l'événement de changement au moment du chargement:

$(document).ready(function(){ 

$('#calendar_list').change(function() { 
... 
}); 
}); 

http://api.jquery.com/live/

+0

besoin de vivre parce que je suis rafraîchissant en utilisant ajax. J'ai fini par utiliser livequery plugin qui semble faire l'affaire – leora

+0

J'ai eu des problèmes similaires avec live ('change') sur le contenu de dyn. live() fonctionne pour de nombreux autres événements, mais pour 'change', vous pouvez relier le comportement dans le gestionnaire de succès de l'appel ajax. – hybernaut

+0

aussi merci pour la rep! – hybernaut

0

Vous pouvez utiliser Firebug Lite. Il vous permet d'utiliser une version allégée de Firebug dans laquelle vous ne pouvez pas utiliser l'extension complète.

http://getfirebug.com/firebuglite

Tout ce que vous devez faire pour utiliser Firebug Lite est d'ajouter le script externe suivant:

<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script> 
+0

comment cela fonctionne-t-il? – leora

+1

@ooo qu'est-ce que tu veux dire? –

0
+0

Oui, mais la barre d'outils IE Dev est le logiciel de débogage le plus terriblement épouvantable de tous les temps, au point d'être presque inutile. Ou peut-être que je suis juste gâté par Firebug/Web Inspector. – deceze

+0

@deceze - il est utile pour résoudre les problèmes d'affichage –

+0

... à un tel point que c'est presque inutile. Pas complètement inutile, mais presque tout à fait. : o) – deceze