[英]Strange behavior in JavaScript
我有2个元素-“ span”(命名为“ divLikedX”)和“ a”(命名为“ aLikeX”)。 我有以下javascript(点击“ a”时发生):
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');
字符串我得到正确的行为。 但是,使用这些字符串,它只能在前两次单击中正常工作,之后它alert($("#divLiked" + CommentID).is(':visible')) == "true"
。 为什么?
您似乎并不是唯一一个有此问题的人:cf http://forum.jquery.com/topic/hidden-visible-broken-in-ie8
当display:none元素附近有可见元素时,问题似乎会出现在IE8中。 这似乎愚弄了检测:visible的jQuery算法。
我可以建议您使用类而不是:visible和:hidden进行测试:
if ($("#divLiked" + CommentID).hasClass('like')) {
$("#divLiked" + CommentID).removeClass('like').show();
$("#aLike" + CommentID).text('Unlike');
} else {
$("#divLiked" + CommentID).addClass('like').show();
$("#aLike" + CommentID).text('Like');
}
我希望这能帮到您,
杰罗姆·瓦格纳(Jerome Wagner)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.