Войти с помощью github
Форум /

Задача. Есть такой 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;
}