Плавная прокрутка страницы до якоря
Хочу на сайте реализовать плавную прокрутку страницы, но на просторах смог найти по name вверх, а мне нужно еще и вниз. Вот код:
if($("a[href^=#services_]")) {
$("a[href^=#services_]").bind('click',function(event) {
var $sender=$(this).attr("href");
var $destination=$("a[name="+$sender.split("#")[1]+"]").offset().top;
$('html,body').stop().animate({scrollTop:$destination},'slow');
event.preventDefault();
});
}
Собственно проблема (как мне кажется) в этих двух строках, ну или в одной из них:
var $destination=$("a[name="+$sender.split("#")[1]+"]").offset().top;
$('html,body').stop().animate({scrollTop:$destination},'slow');
Имя содержит помимо services_ дополнительный текст (везде разный):<a name="services_абракадабра"></a> ... <a name="services_симсимоткройся"></a> Мучаюсь уже второй день, а разобраться не могу. С JS пока что на ВЫ :( Прошу помощи в решении данного вопроса ^^, |
не проверял
$( 'a[href^=#services_]' ).click( function () {
var id = $( this ).attr( 'href' ).match( /#.+$/ )[0];
var offsetTop = $( id ).offset().top;
$( 'body' ).stop().animate( {'scrollTop':offsetTop } );
} );
|
YamazakiHL,
Выложите минимальный HTML необходимый для работы скрипта |
Drimogemon,
Там по крайней мере - Хеш нун задать в селекторе и return false иначе бу срабатывать по всем ссылкам |
Цитата:
п.с. ой точно ты прав он как раз это делать и не умеет)) спс Цитата:
|
Deff
табличка-навигации:
<table border="0px" cellpadding="0px" cellspacing="0px" id="link">
<tr>
<th align="center" colspan="2">Принимаются заказы на следующие виды фотоуслуг:</th>
</tr><tr>
<td align="center">
<a href="#services_Свадебная фотосъёмка">
<div>Свадебная фотосъёмка</div>
</a>
</td><td align="center">
<a href="#services_Фотосъемка праздников">
<div>Фотосъемка праздников</div>
</a>
</td>
</tr>
</table>
таблички разделов:
<table width="100%" border="0px" cellpadding="0px" cellspacing="0px" id="list">
<tr>
<td align="left" class="list_title">
<div class="cost">0,00 руб.</div>
<a name="services_Свадебная фотосъёмка"></a>
Свадебная фотосъёмка
</td>
</tr><tr>
<td align="left" valign="top">
...описание...
</td>
</tr>
</table>
<table width="100%" border="0px" cellpadding="0px" cellspacing="0px" id="list">
<tr>
<td align="left" class="list_title">
<div class="cost">0,00 руб.</div>
<a name="services_Фотосъемка праздников"></a>
Фотосъемка праздников
</td>
</tr><tr>
<td align="left" valign="top">
...описание...
</td>
</tr>
</table>
Весь JS:
$(document).ready(function() {
if($("a[href=#diapazon")) {/* прокрутка вверх - работает */
$("a[href=#diapazon]").bind('click',function(event) {
$('html,body').stop().animate({scrollTop:$("body").offset().top},'slow');
event.preventDefault();
return false;
});
} else if($("a[href^=#services_]")) {/* прокрутка вниз - не работает*/
$("a[href^=#services_]").bind('click',function(event) {
var $sender=$(this).attr("href").match( /#.+$/ )[0];
var $destination=$sender.offset().top;
$('html,body').stop().animate({scrollTop:$destination},'slow');
event.preventDefault();
return false;
});
}
});
не помогает выше описанный |
Вобщем
YamazakiHL, Drimogemonу плюс ставьте - поскольку он основную работу сделал - мну ток подправил
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$( 'a[href^=#services_]' ).click( function () {
var id = $( this ).attr( 'href' ).match( /#.+$/ )[0].substr(1);
var offsetTop = $("a[name='"+ id + "']").offset().top;
$('body,html').animate({scrollTop:offsetTop}, 500);
return false;
});
});
</script>
<table border="0px" cellpadding="0px" cellspacing="0px" id="link">
<tr>
<th align="center" colspan="2">Принимаются заказы на следующие виды фотоуслуг:</th>
</tr><tr>
<td align="center">
<a href="#services_Свадебная фотосъёмка">
<div>Свадебная фотосъёмка</div>
</a>
</td><td align="center">
<a href="#services_Фотосъемка праздников">
<div>Фотосъемка праздников</div>
</a>
</td>
</tr>
</table>
<table width="100%" border="0px" cellpadding="0px" cellspacing="0px" id="list">
<tr>
<td align="left" height="300px" class="list_title">
<div class="cost">0,00 руб.</div>
<a name="services_Свадебная фотосъёмка"></a>
Свадебная фотосъёмка
</td>
</tr><tr>
<td align="left" valign="top">
...описание...
</td>
</tr>
</table>
<table width="100%" height="300px" border="0px" cellpadding="0px" cellspacing="0px" id="list">
<tr>
<td align="left" class="list_title">
<div class="cost">0,00 руб.</div>
<a name="services_Фотосъемка праздников"></a>
Фотосъемка праздников
</td>
</tr><tr>
<td align="left" height="700px" valign="top">
...описание...
</td>
</tr>
</table>
|
Спасибо большое! Долго же я мучился... Обоим + !:thanks:
Поясните пожалуйста за что отвечает ...substr(1); ? или поясните строку вцелом |
Цитата:
|
Ааам, понятно. Спасибо.
|
| Часовой пояс GMT +3, время: 06:24. |