Задача. Есть такой bemjson
{
block:'nav-menu',
items:[
{block:'link'},
{block:'link'},
{block:'link'},
]
}
По клику на ссылках, нужно прокручивать страницу. Для этого нужно подписаться на клик. Сейчас это сделано так:
BEMDOM.blocks['link'].on(this.domElem,'click', this._scrollto, this);
При этом, отрабатывает обычный клик, потом отрабатывает прокрутка. визуально страница быстро дергается к якорю, возвращается на исходную, и плавно прокручивается.
Проблему можно решить подписавшись на DOM событие click. Но, некоторые ссылки могут быть disabled
. Ожидается, что по клику на обычной ссылке будет прокрутка, по отключенной, ничего не произойдет. Как совместить эти события не дублируя функциональность блока link
?
На всякий случай приведу метод _scrollto
:
_scrollto: function(e){
var url = e.target.getUrl();
var to = $(url).offset().top - this.offset;
$('html, body').animate( {scrollTop: to}, this.speed );
return false;
}
e.preventDefault() не поможет?
@Guria К сожалению, нет. Эффект тот же
Не помешал бы живой пример, чтобы понять что именно у вас происходит
@kompolom возможно, подойдет _pseudo?
@tadatuta спасибо, подошло.