帮我诊断这个jQuery循环/书签哈希问题?

时间:2010-04-28 05:15:46

标签: javascript jquery jquery-selectors

我在让我的jquery 100%正确渲染时遇到了一些麻烦 - 我使用的代码位于下方。它的目的是通过隐藏除回复主题之外的所有内容来“模拟”线程论坛的感觉 - 当点击主题时,第一个帖子随后被回复替换。

你可以在这里看到它的一个例子:

http://bulldogsworld.com/general-bulldog-chat/50-lbs-bulldog-one-shin-pic

问题是当人们通过URL中的书签#登陆时脚本不能很好地工作,例如: http://bulldogsworld.com/general-bulldog-chat/50-lbs-bulldog-one-shin-pic#comment-1627028

具体而言,发生的问题是由于某种原因,书签入口点以下的所有帖子都被复制两次。我无法弄清楚为什么会这样 - 有什么想法吗?

我正在把头发拉出来 - 非常感谢任何帮助/指导!

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).nextAll().children('.forumthreadtitle').show());
        }

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

1 个答案:

答案 0 :(得分:1)

您可能需要在next()

中使用nextAll()代替flip
flip($(window.location.hash).next().children('.forumthreadtitle').show());

nextAll()返回选中后的所有元素,并将它们全部传递给翻转函数。