javascript - 使用 ajax 加载选项卡内容 onclick

标签 javascript jquery ajax handlebars.js

我正在尝试学习 JS 和一些 JS 模板库,但使用它们时遇到一些困难。 我正在尝试构建一个页面,该页面将使用 ajax 从 json 文件动态加载内容,然后创建包含内容的选项卡。

JSON 文件结构类似于

"id": "0",  
"name": "Some Title",
"content": "<h1>Hello</h1>"

这是我的 html 文件:

<div class="container">
    <ul class="nav nav-tabs" id="tabsId">
        <script id="tabs-template" type="text/x-handlebars-template">
            {{#each Tabs}}
                <li data-tab-content={{Id}}><a href="#">{{Name}}</a></li>
            {{/each}}
        </script>
    </ul>
    <div id="tabsContentId">
    <script id="tabs-content-template" type="text/x-handlebars-template">
        {{#each Tabs}}
            <div class="tab-content" data-tab-content="{{Id}}">{{Content}}</div>
        {{/each}}
    </script>
    </div>
</div>

这是我的 JS:

$(function() {
    sendRequest();
});

function sendRequest () {
    $.ajax({
        url         : '../data/tabs.json',
        type        : 'GET',
        dataType    : 'json',
        success     : function( response ) {
            createTabs(response);
            createTabsContent(response);
        },
        error : function( xhr, status, errorThrown ) {
            console.log( 'ConsoleStatus: ' + status );
            console.log( 'ConsoleError: ' + errorThrown );
        },
    });
}

function createTabs( data ) {
    var templateSource  = $('#tabs-template').html(),
        template        = Handlebars.compile( templateSource ),
        tabsContainer   = template( data );
    $('#tabsId').html( tabsContainer );
}

function createTabsContent( data ) {
    var templateSource  = $('#tabs-content-template').html(),
        template        = Handlebars.compile( templateSource ),
        tabsContainer   = template( data );
    $('#tabsContentId').html( tabsContainer );
}

如何在单击时加载选项卡内容?

最佳答案

以下是有关如何操作的基本想法:

$(function() {

    $("#tabsId").on("click", "li", function(evt) {

        evt.preventDefault();
        var id = $(this).data("tabContent");
        $("#tabsContentId")
        .find(".tab-content[data-tab-content='" + id + "']").show()
        .siblings().hide();
    });
});

拿一个look at this demo完整的例子。

关于javascript - 使用 ajax 加载选项卡内容 onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31381370/

相关文章:

javascript - 检查 JavaScript 文件是否已下载

javascript - 在 asp.net 用户控件中找不到隐藏字段

javascript - 如何将工具栏按钮添加到自定义 tinymce 下拉菜单中?

php - 切换 JQuery slider - 默认值为 50%

jquery - 使用 Spring 进行 JQuery/Ajax 的 JSON 请求

javascript - 使用 Bootstrap 折叠类不适用于多个 div 标签

javascript - 当我只包含 jQuery 1.4 库时,出现异常,为什么?

javascript - Jquery 点击时关闭 div

ajax - Woocommerce storefront_cart_link 覆盖无效

javascript - AJAX:检查字符串是否为 JSON?