编程语言
首页 > 编程语言> > javascript-将模式覆盖与twitter bootstrap scrollspy一起使用-错误激活

javascript-将模式覆盖与twitter bootstrap scrollspy一起使用-错误激活

作者:互联网

我有一个基于twitter引导的导航菜单栏,该菜单栏使用scrollspy进行突出显示.

这可以通过匹配链接中#后的值来实现(例如,当< div id =“ foo”>滚动到视图中时,是< a href =“#foo”>).很基本的,这是doco:http://twitter.github.com/bootstrap/javascript.html#scrollspy

当我在被监视的元素中引入到引导模式对话框的链接时,就会出现问题.想象我有:

<ul class="nav">
  <li><a href="#info">a link</a></li>
  <li><a href="#demo" role="button" data-toggle="modal">modal</a></li>
  <li><a href="#products">a different link</a></li>
</ul>
<p> .. my page .. </p>
<div id="info"><a name="info"></a>info on my product</div>
<div id="products"><a name="products"></a>a list of my products</div>
<div class="modal hide fade" id="demo" tabindex="-1" role="dialog">
  <div class="modal-header">my header</div>
  <div class="modal-body">some content</div>
  <div class="modal-footer"><button>close</button></div>
</div>
<p> .. more page </p>

代表我的模式叠加层的div的href也使用#id-of-target格式,但是由于它包含在导航栏中(当然),所以滚动的ALSO会在显示(隐藏的)div时突出显示.根据模式代码在页面上的位置,这会混淆菜单系统的突出显示.

我可以看到应该将scrollspy修改为仅链接到可见的项(因此,当“演示”滚动到视图中时不会激活),但无法解决如何将插件修改为仅在元素可见时触发的情况,或者以其他方式覆盖事件.

谁能给我一些指示?

解决方法:

有趣的是,有时输入一个问题会如何使您以正确的方式思考,以解决问题,而仅考虑一个问题就不会.

为了完成这项工作,我修改了bootstrap的scrollspy组件,以便它测试目标是否被隐藏并退出激活例程(也不会引发被激活的事件,因为它不处于活动状态)

在这里是:1432行对我来说(如果..

, activate: function (target) {
    var active
      , selector

     if (target.is(":hidden")) return 

    this.activeTarget = target

标签:twitter-bootstrap,modal-dialog,javascript
来源: https://codeday.me/bug/20191031/1978582.html