2010-09-28 2 views
1

У меня есть два элемента - «span» (с именем «divLikedX») и «a» (называемый «aLikeX»). У меня есть следующий Javascript (происходит нажав на «а»):Странное поведение в JavaScript

function CommentLike(CommentID, aLink) { 
     if (CommentID != null && CommentID > 0) 
      $.post("/Home/LikeComment", { CommentID: CommentID }, 
      function() { 
       //alert($("#divLiked" + CommentID).is(':visible')); 
       /*alert($(aLink).text());*/if ($("#divLiked" + CommentID).is(':hidden')) { 
        $("#divLiked" + CommentID).show(); 
        $("#aLike" + CommentID).text('Unlike'); 
       } else { 
        $("#divLiked" + CommentID).hide(); 
        $("#aLike" + CommentID).text('Like'); 
       } 
      }); 
     }; 

Если удалить $("#aLike" + CommentID).text('Unlike'); и $("#aLike" + CommentID).text('Like'); строки я получаю правильное поведение. Но с этими строками он работает правильно только первые 2 клика, после этого alert($("#divLiked" + CommentID).is(':visible')) == "true" всегда. Зачем?

+0

совет: вторая линия может замените на 'if (CommentID)' –

+0

Мое единственное предложение - «проверить элемент» с FF или хром в начале и после каждого щелчка, чтобы узнать, какие атрибуты получает div. –

+0

Является ли один из этих элементов родителем другого? –

ответ

1

вам не кажется, только один с вопросом: ср http://forum.jquery.com/topic/hidden-visible-broken-in-ie8

Проблемы, кажется, добавить в IE8, когда дисплей: нет элемент имеет видимые элементы поблизости. Кажется, это обманет алгоритм jquery, который обнаруживает: видимый.

Я могу посоветовать вам, чтобы проверить с классом вместо: видимого и: скрытый:

if ($("#divLiked" + CommentID).hasClass('like')) { 
     $("#divLiked" + CommentID).removeClass('like').show(); 
     $("#aLike" + CommentID).text('Unlike'); 
} else { 
     $("#divLiked" + CommentID).addClass('like').show(); 
     $("#aLike" + CommentID).text('Like'); 
} 

Я надеюсь, что это поможет вам,

Джером Вагнер

Смежные вопросы