и снова scrollTo
Доброго времени суток!
Не работает scrollTop, может быть кто-то сталкивался, код:
//работает со старой версией jQuery
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
//не работает с новой версией
//<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function myFu() {
$('#content').append('<p>aaaaaaa</p>');
$("#content").animate({ scrollTop: $("#content").attr("scrollHeight") - 20 }, 'normal');
return false;
}
</script>
<a href="#" onclick="myFu();">aaaa</a>
<div id="content" style="position: fixed;bottom: 0px; height:250px; bottom: 0px; overflow:auto;border: 1px solid black; width: 99%">
<p style="padding-bottom:10px;">123</p>
<p style="padding-bottom:10px;">123</p>
<p style="padding-bottom:10px;">123</p>
<p style="padding-bottom:10px;">123</p>
</div>
При нажатии на ссылку добавляется элемент в див и прокручивается вниз. Со старыми версиями jquery это работает, с новыми отказывается. Во всех рабочих документациях участвуют старые версии jQuery. Просто на этот див мне нужно навесить еще ресайзабл, а он со старыми версиями не работает, меж двух огней оказался. Гуру помогите, спасибо. |
попробуй так
<script type="text/javascript">
function myFu() {
$('#inner').append('<p>aaaaaaa</p>');
$("#content").animate({ scrollTop: $('#inner').height() }, 500);
}
</script> <a href="#" onclick="myFu();return false">aaaa</a> <div id="content" style="position: fixed;bottom: 0px; height:250px; bottom: 0px; overflow:auto; border: 1px solid black; width: 80%"> <div id="inner"> <p style="padding-bottom:10px;">123</p> <p style="padding-bottom:10px;">123</p> <p style="padding-bottom:10px;">123</p> <p style="padding-bottom:10px;">123</p> </div> </div> |
Специально же подробно написал
//работает со старой версией jQuery <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> я привел аналогичный рабочий пример. Если подключить новую библиотеку jQuery, например, //не работает с новой версией <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>, то не работает. Использование старой библиотеки меня не устраивает, потому что используются вещи, которые не работают со старой версией (например, resizable) |
ОУУ ) нет, это мои криворуки ) действительно, так работает!
|
так мой вариант работает в новой версии, разве не это тебе надобно?
|
Сорри, так я тоже делал ) рассказываю шаг 2 ) Подключаем ресайзабл элемента. Казалось бы, что всё получилось, наш див ресайзится, при добавлении элемента скроллинг уходит вниз. Но после одного добавления через .append() див перестает ресайзится.
Аналогичный результат я получил в первом посте подключая библиотеку версии <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script> смотрим:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
function myFu() {
$('#inner').append('<p>aaaaaaa</p>');
$("#content").animate({ scrollTop: $('#inner').height() }, 500);
$("#content").resizable({ animate: true, handles: 'n' });//это должно быть, чтобы после каждого добавления контента оставалась возможность ресайза
}
</script>
<a href="#" onclick="myFu();return false">aaaa</a>
<div id="content" style="position: fixed;bottom: 0px; height:250px; bottom: 0px; overflow:auto; border: 1px solid black; width: 80%">
<div id="inner">
<p style="padding-bottom:10px;">123</p>
<p style="padding-bottom:10px;">123</p>
<p style="padding-bottom:10px;">123</p>
<p style="padding-bottom:10px;">123</p>
</div>
</div>
<script>
//это чтобы при загрузке работало
$(document).ready(function () {
$("#content").resizable({ animate: true, handles: 'n' });
})
</script>
|
Разобрался, просто ползунок ресайза уходил вверх, он не пропадал, а надо было перемотать скроллинг вверх, тогда можно было ресайзить. Я обернул все внутренности в еще один див и подставил коррекцию высоты. Всё работает, всем спасибо!
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
function myFu() {
$('#inner').append('<p>aaaaaaa</p>');
$("#content").animate({ scrollTop: $('#inner').height() }, 500);
$("#content").css("height", "100%");//вот она, рыба моей мечты
}
</script>
<a href="#" onclick="myFu();return false">aaaa</a>
<div id="outer" style="position: fixed;height:250px; bottom: 0px; border: 1px solid black; width: 99%">
<div id="content" style="overflow:auto;border: 1px solid black; width: 100%">
<div id="inner">
<p style="padding-bottom:10px;">123</p>
<p style="padding-bottom:10px;">123</p>
<p style="padding-bottom:10px;">123</p>
<p style="padding-bottom:10px;">123</p>
</div>
</div>
</div>
<script>
//это чтобы при загрузке работало
$(document).ready(function () {
$("#outer").resizable({ animate: true, handles: 'n' });
})
</script>
|
| Часовой пояс GMT +3, время: 13:29. |