5.4.2 JavaScript用法

滚动侦测的JavaScript用法相对比较简单,只需要指定两个容器的名称即可。示例如下:

  1. 用法:$('滚动侦测容器选择符').scrollspy({ target: '#菜单容器的选择符' })
  2. 示例:$('body').scrollspy({ target: '#selector' })

如果需要经常在滚动侦测的容器内部进行DOM更新,则更新以后为了让该滚动侦测功能继续能用的话,需要使用如下代码进行刷新绑定相关的事件。示例代码如下:

  1. $('[data-spy="scroll"]').each(function () {
  2. var $spy = $(this).scrollspy('refresh')
  3. })

需要注意的是,这种refresh只对声明式用法有效,如果使用的是JavaScript方式,并且需要刷新DOM,那就需要重新应用该插件;或者从data-scrollspy属性上获取该实例,然后再调用refresh方法了。

第一个示例中的target是作为options参数传递进去的。除了该参数以外,滚动侦测容器还支持另外一个offset参数,用法如表5-6所示。

5.4.2 JavaScript用法 - 图1

滚动侦测也支持事件的订阅和触发功能,目前只支持一个activate事件,描述如表5-7所示。

5.4.2 JavaScript用法 - 图2

事件用法如下:

  1. $('#fat').on('activate.bs.scrollspy', function () {
  2. // 处理代码…
  3. })

注意

分析源码以后,笔者发现在触发该事件的时候使用的是trigger('activate'),没有使用全名称的命名空间,所以也可以像如下代码这样绑定事件:

  1. $('#fat').on('activate, function () {
  2. // 处理代码…
  3. })