【问题标题】:Load and unload a page into a div from a navigation button从导航按钮将页面加载和卸载到 div
【发布时间】:2014-03-21 21:23:33
【问题描述】:

谁能用最简单的代码告诉我,如何通过简单的单击将 html 页面加载和卸载到名为“myDiv”的 div 中?

当我按下导航菜单上的另一个按钮时,我将卸载“myDiv”并替换为另一个页面。

这是什么设置?

编辑

我有 3 页(page1.html、page2.html、page3.html)

我的导航如下:

<ul>
  <li><a href="page1.html"></a></li>
  <li><a href="page2.html"></a></li>
  <li><a href="page3.html"></a></li>
</ul>

我正在尝试将这些页面加载到“myDiv”中,每次我单击不同的页面按钮时,每个页面都会替换之前加载的页面。就这样。

我希望我把我想做的事情清楚地表达出来,希望不会遗漏任何重要的事情。

【问题讨论】:

    标签: html


    【解决方案1】:

    假设你可以使用 javascript/jQuery(你没有提供很多关于你的环境的信息)......

    看看 jQuery load() 方法。

    http://api.jquery.com/load/

    <div id="myDiv"></div>
    <button id="myButton">Click Me</button>
    
    <script type="text/javascript">
        $( document ).ready( function() {
            $( '#myButton' ).click( function() {
                $( '#myDiv' ).load( 'test.html' );
            });
        });
    </script>
    

    这应该可以完成您的工作。剩下的交给你:)

    编辑:

    好的,更符合您正在寻找的内容...

    假设您可以修改标记并向您的 a 元素添加类属性...

    <ul>
        <li><a href="page1.html" class="dynamicLoad"></a></li>
        <li><a href="page2.html" class="dynamicLoad"></a></li>
        <li><a href="page3.html" class="dynamicLoad"></a></li>
    </ul>
    
    <script type="text/javascript">
        $( document ).ready( function() {
            $( 'a.dynamicLoad' ).click( function( e ) {
                e.preventDefault();   // prevent the browser from following the link
                e.stopPropagation();  // prevent the browser from following the link
    
                $( '#myDiv' ).load( $( this ).attr( 'href' ) );
            });
        });
    </script>
    

    因此,任何具有 dynamicLoad 类的“a”元素都会在单击时触发此事件。我们不希望浏览器尝试跟随链接,所以我们使用 preventDefault() 和 stopPropagation()。唯一的其他区别是我们不是静态加载“test.html”。我们通过使用 jQuery 的 $( this ) 来确定要加载的 html 页面,它表示触发该函数的元素。使用 attr() 方法,该方法返回元素的特定属性的值。在这种情况下,是 href 属性。

    问题?

    【讨论】:

    • 我不确定编辑如何改变任何东西?您在页面上有一个 div,大概具有“myDiv”的 id 属性。单击导航元素时,您希望将 HTML 页面加载到该 div 中。同样,我假设您想通过 AJAX 来实现。假设所有这些都是正确的,上面的代码会做你想做的。
    • ok.... 那么 $( '#myDiv' ).load( 'test.html' ); ?在我看来,要加载的页面是硬编码的。如何将任何页面加载到“myDiv”中,而不仅仅是 test.html?就像现在一样,当我尝试您的代码时,我单击导航按钮并打开一个全新的页面,而不是进入我想要的 div。
    • 是的,我的示例是将 test.html 硬编码到 div 中。它旨在成为如何通过 AJAX 将页面加载到 div 的示例。这并不是为了给您提供您正在寻找的东西。这是一个凝视点。至于为什么单击导航按钮会加载一个全新的页面,如果没有看到您的代码就不可能说出来。随意将它粘贴到 jsFiddle,我会看看。
    • 顺便说一下,我要指出你已经在 SO 上活跃了一天,问了 4 个问题...收到了 8 个答案,但没有接受任何一个。如果他们确实回答了您的问题,请随时将答案标记为“已接受”。
    • 到目前为止,您的最新代码似乎可以解决问题。如果我有任何问题,我会告诉你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多