2010-07-27 5 views
0

Le morceau de jQuery suivant est utilisé sur une page qui a un message en haut, et tous les commentaires qui répondent au message ci-dessous. La façon dont le code fonctionne sur IE8/Chrome/Firefox est "effondre" tous les commentaires ci-dessous le message initial, donc seulement leurs sujets apparaissent. En cliquant sur leurs sujets, le message initial est substitué au commentaire (c'est-à-dire qu'il "simule" l'action d'avoir chaque commentaire sur sa propre page).IE6 n'aime pas mon simple jQuery: Une idée pourquoi?

Le problème est IE6 refuse de travailler avec le code; lorsque les visiteurs IE6 atterrissent sur la page, tous les commentaires refusent de s'effondrer, et cliquer sur les titres ne fait rien.

Quelqu'un at-il une idée de la façon de corriger ce problème pour rendre le JS IE6 compatible?

function flip(comment) { 
$('#first-post').replaceWith(comment.closest(".comment").clone().attr('id','first-post')); 
$('#first-post').children('.forumthreadtitle').children('.comment-info').empty(); 
$('#first-post').find(':hidden').fadeIn('slow'); 
$('html, body').animate({scrollTop:0}, 'fast'); 
return false; 
} 

$(document).ready(
function(){ 

$('.submitted').each(function() { 
$(this).clone().addClass('comment-info').appendTo($(this).siblings('.forumthreadtitle')); 
if(!$(this).parent('#first-post').html()) { 
    $('#first-post').children('span.taxonomy').clone().appendTo($(this)); 
    } 
}); 

$('.display_mode').html('Show All Replies'); 
expandedMode = false; 
$('.display_mode').click(function() { 
    if (expandedMode == false ) { 
     $('.forumthreadtitle').siblings().show(); 
     $(this).html('Collapse Replies'); 
     expandedMode = true; 
     } 
    else 
     { 
     $('.forumthreadtitle').siblings().hide(); 
     $(this).html('Show All Replies'); 
     expandedMode = false; 
     } 
    }); 

$('.forumthreadtitle').siblings().hide(); 

if(window.location.hash) { 
     flip($(window.location.hash).next().children('.forumthreadtitle').show()); 
     } 

$('.forumthreadtitle').click(function() { 
    pageTracker._trackPageview("/comment?page=" + document.location.pathname); 
    flip($(this)); 
    }); 
}); 

Voici quelques exemples HTML (ai essayé de simplifier un peu pour le rendre plus facile à comprendre):

<DIV id="first-post"> 
     <H2 class="title"><A href="test.html">TEST</A></H2> 
     <SPAN class="submitted">Submitted by Big J on July 26, 2010 - 3:26pm</SPAN> 
    <DIV class="content">First Post</DIV> 
</DIV> 

<DIV id="comments"> 
    <A id="comment-1643951"></A> 
<DIV class="comment comment-published clear-block"> 
    <H3 class="forumthreadtitle"><A href="test.html#comment-1643951" class="active">Test Reply....</A> 
    <DIV class="submitted comment-info">Submitted by test on July 26, 2010 - 4:49pm.</DIV> 
    </H3> 

    <DIV class="content" style="display: none; "> 
    Test Comment Content 
    </DIV> 
</DIV> 
</DIV> 
+0

Avez-vous essayé de regarder ici: http://stackoverflow.com/questions/463800/jquery-document-ready-failing-in-ie6? – nandokakimoto

+0

J'ai - J'ai changé $ (document) à jQuery sans aucune chance - merci pour la suggestion –

Répondre

0

Je vous recommande d'essayer 2 choses:

  1. Utilisez jQuery (function() {}) au lieu de $ (document) .ready (function() {});
  2. Déplacez votre code jQuery au bas de la page HTML.
+0

Merci pour ces suggestions! Je vais les essayer maintenant –

+0

J'ai changé $ (document) en jQuery, et mon code est déjà en bas de la page - toujours pas d'effet :( –

Questions connexes