代码之家  ›  专栏  ›  技术社区  ›  Jay Godse

长页分隔符:使用effect.toggle在底部展开一个分隔符:页面滚动回顶部

  •  0
  • Jay Godse  · 技术社区  · 15 年前

    我有一页这样的内容(是的,我已经包括了scriptaculous的javascripts,因为切换确实有效):

    <html>
    
    <div id="container">
        <div id="thing1" class="thing" >
           <p>Some visible stuff 1</p><a href="#" onclick="Effect.toggle('extra1');">More1</a>
           <div id="extra1" style="display:none;">
             <p>Some extra and initially invisible stuff</p>
           </div>
        </div>
    
        <div id="thing2" class="thing">
           <p>Some visible stuff 2</p><a href="#" onclick="Effect.toggle('extra2');">More2</a>
           <div id="extra2" style="display:none;">
             <p>Some extra and initially invisible stuff</p>
           </div>
        </div>
    
       <!-- 96 more entities of class="thing" -->
    
        <div id="thing99" class="thing">
           <p>Some visible stuff 99</p><a href="#" onclick="Effect.toggle('extra99');">More99</a>
           <div id="extra99" style="display:none;">
             <p>Some extra and initially invisible stuff</p>
           </div>
        </div>
    </div>
    </html>
    

    当我点击位于页面底部的“more99”链接id=“thing99”时,DIV at id=“extra99”会按原样显示,但页面随后会自动滚动回顶部。

    当我点击顶部的“more1”链接时,它会一直集中在顶部。

    我是否可以阻止页面滚动回顶部和/或将其重新聚焦到我刚才单击的位置?我不想向下滚动,找出我刚才看到的那个。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Sampson    15 年前

    尝试 return false; 在你之后 Effect.toggle(); 电话。

    <a href="#" onclick="Effect.toggle('extra99'); return false;">More99</a>
    

    这不是处理这个问题的理想方法,但它应该可以解决您当前的问题。理想情况下,您可以从HTML中删除所有的javascript,并去掉所有的 onclick 属性,处理来自远程JavaScript块的所有内容。

        2
  •  -1
  •   Jay Godse    15 年前

    乔纳森和塔图让我走上了正确的道路。我试过“返回错误”,但有一段时间效果不错。

    随着“返回错误”的概念的掌握,我搜索了谷歌并偶然发现 this page 对于hrefs,返回false。

    那个“”标签一直让我回到页面的顶部。我尝试过在不使用“返回错误”的情况下使用href=“”,但是它也随机地重新加载了页面。

    以下解决方案始终满足了我的需求:

    <a href="" onclick="Effect.toggle('extra99'); return false;">More99</a>
    

    一切都按要求工作,没有随机的页面重新加载。