Почему этот div не будет автоматически прокручиваться?

У меня это работает хорошо, но автопрокрутка отказывается работать... есть идеи, почему?

PS Я хочу использовать только jQuery... commentsList находится внутри commentsPanel

    $.ajax({
            url: 'comments.php',
            type: 'POST',
            data: data,
            cache: false,
            success: function (comments_html) {

                $('#commentsPanel').html(comments_html);
                var commentsList = document.getElementById('#commentsList');
                commentsList.scrollTop = commentsList.scrollHeight;
                $('#loading').hide();
            }
        });

Спасибо!

   <div id="commentsPanel">
    <table width="260" height="220" border="0" cellpadding="3">
                    <tr><td height="5"></td><td><span style="text-align:right;"><a href="#close" rel="close_comment">Close</tr>
                    <tr><td height="220" valign="top">
                        <div id="commentsList" style="overflow: auto; width: 260px; height: 220px; text-align=left">
    <!-- CONTENT -->

    </div>
                </td></tr>
                <tr><td height="50">
                <form id="new_comment" name="comment_form" method="post" action="comments.php">
                    <input type="hidden" id="trackID" value="' . $track . '">
                    <input type="text" size="25" id="new_comment_text" /><span style="text-align:right">
                    <input type="submit" value="Comment" id="submit_comment"/></span>
                </form>
                </td></tr>
                </table>
</div>

person Alex    schedule 18.03.2011    source источник
comment
1: где разметка? 2: в каких браузерах/версиях вы пытаетесь заставить его работать?   -  person Martin Jespersen    schedule 18.03.2011
comment
Размещенный вами HTML-код недействителен. Исправьте отступ, и вы поймете, что я имею в виду: jsfiddle.net/mattball/NJv6w   -  person Matt Ball    schedule 18.03.2011


Ответы (3)


При использовании var commentsList = document.getElementById('#commentsList'); вам не нужно включать #

var commentsList = document.getElementById('commentsList');
person Mark Coleman    schedule 18.03.2011
comment
Каков ваш предполагаемый результат после ajax complete? Поскольку вы уничтожаете commentsPanel, вызывая .html(), где в прокручиваемом div вы хотите просмотреть? По умолчанию он должен быть наверху, но если нет, вы можете просто сделать commentsList.scrollTop = 0? - person Mark Coleman; 18.03.2011

Забавно, вы сказали: "Я хочу использовать только jQuery", но при этом используете document.getElementById().

Вы смешиваете jQuery с методами DOM. Измените эту строку:

var commentsList = document.getElementById('#commentsList');

к этому:

var commentsList = $('#commentsList');
person Matt Ball    schedule 18.03.2011
comment
Я просто имел в виду, что не хочу использовать плагин. - person Alex; 18.03.2011
comment
Я попробовал оба ответа здесь, и, похоже, он не работает (пока) - person Alex; 18.03.2011

Вы говорите, что commentsList находится внутри commentsPanel, но заменяете все внутри commentsPanel этой строкой:

$('#commentsPanel').html(comments_html);

Вы уверены, что commentsList действительно существует в то время? Добавьте следующее после строки var commentsList = ....

console.log(commentsList);

Чтобы убедиться, что он действительно существует.

person Blair McMillan    schedule 18.03.2011