Помогите мне диагностировать проблему с циклом jQuery / Закладка хэша? - PullRequest
0 голосов
/ 28 апреля 2010

У меня возникают проблемы с правильным отображением jquery в 100% случаев - код, который я использую, находится ниже. Его цель состоит в том, чтобы «смоделировать» ощущение многопользовательского форума, скрывая все, кроме темы ответов - при нажатии на тему 1-й пост заменяется ответом.

Вы можете увидеть пример этого в действии здесь:

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 Ответ

1 голос
/ 28 апреля 2010

Вам, вероятно, нужно использовать next() вместо nextAll() в вашем flip

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

nextAll() возвращает все элементы после выбранного, и все они передаются в функцию flip.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...