jquery - 没有方法scrollTo

标签 jquery backbone.js scrollto

我试图在backbone.js 事件函数中调用scrollTo 方法。我想在单击列表 anchor 时滚动到某个 div 标签。我将单击事件绑定(bind)到一个函数并在该函数中调用了 scrollTo 方法,但出现错误“Uncaught TypeError: Object function (a,b){return new e.fn.init(a,b,当我单击 anchor 时,h)} 没有方法“scrollTo””。

请帮忙!

这里是一些示例代码。

var MenuItemListView = Backbone.View.extend({
    el: $('#menuitem_list_container'),
    initialize: function() {
        _.bindAll(this, 'render');
    },
    render: function() {
        var template = _.template( $("#menuitem_list_template").html(), {selectedindex: menuItemList.get('selectedindex'), menuitemlist: menuItemList.get('menuitemlist')});
        this.el.html(template);
        return this;
    },
    events: {
        "click .nav a":"buttonClick"
    },
    buttonClick: function(e) {
        e.preventDefault();
        target = e.currentTarget.hash;
        alert(target);
        $.scrollTo(target, 100);
    }
});

最佳答案

据我所知,您在这里所做的事情是错误地使用了scrollTo插件。 e.currentTarget.hash 将是一个字符串,scrollTo 插件允许的参数是:

  • 相对选择器 $(...).scrollTo( 'li:eq(14)', 800 );
  • jQuery 对象 $(...).scrollTo( $('div li:eq(14)'), 800 );
  • DOM 元素 $(...).scrollTo( $('ul').get(2).childNodes[20], 800 );
  • 绝对数字 $(...).scrollTo( 150, 800 );
  • 绝对数字(哈希) $(...).scrollTo( { top:800, left:700}, 800 );
  • 绝对位置 $(...).scrollTo( '520px', 800 );
  • 绝对位置(哈希) $(...).scrollTo( {top:'110px', left:'290px'}, 800 );
  • 相对位置 $(...).scrollTo( '+=100px', 800 );
  • 相对位置(哈希)$(...).scrollTo( {top:'-=100px', left:'+=100'}, 800 );
  • 百分比$(...).scrollTo( '50%', 800 );

所以你最终想要做的是找到你想要击中的 anchor 的位置

这些是您的 Backbone View 最终将事件绑定(bind)到的 anchor :

<div class="nav">
  <a href="#foo">Foo</a>
  <a href="#bar">Bar</a>
</div>

这些是您想要达到的目标:

<a name="foo">Foo</a>
<a name="bar">Bar</a>

所以你必须尝试找到所述命名 anchor 的位置,如下所示:

var hash = e.currentTarget.hash.replace('#', '');
var $anchor = $('a[name=' + hash + ']');

然后您可以使用 jQuery 对象参数,如下所示:

$.scrollTo( $anchor, 800 );

这应该可以解决你的问题

关于jquery - 没有方法scrollTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10527823/

相关文章:

javascript - jQuery keyup = 而不是 ==

javascript - 在非 SPA(单页应用程序)中使用 Require.js 和 Backbone

javascript - 滚动效果 jquery 不工作

javascript - 如何在父div中水平居中多个div

javascript - 与父容器相关的固定位置

javascript - $ ("html, body").animate({scrollTop :0}, 'slow' );在我的页面上不起作用

jquery - fullCalendar 与backbone.js 给出错误

javascript - 绑定(bind)事件以在模板内选择模板中的选项

jQuery Mobile 滚动到焦点元素

css - 单击时以 Angular 6 水平滚动 div