2

在 twitter 引导导航选项卡中加载一个timeline.js小部件会破坏选项卡式导航。

在下面的代码中,注释掉createStoryJS(config)并且标签可以正常工作。

不要注释掉 -> 时间线加载正确,但标签导航中断。单击选项卡会TypeError: $(..).tab()在 Firefox 中出现 is not a function 错误(在 chrome 中相同)。

我怀疑一个错误,但我可能在某处遗漏了一个选项。

代码:

<!DOCTYPE html>
<html>
<head>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    <meta content="utf-8" http-equiv="encoding">

    <link href="assets/bootstrap/css/bootstrap.css" rel="stylesheet">
    <script src="assets/jquery.min.js"></script>
    <script src="assets/timeline/js/storyjs-embed.js"></script>
    <script src="assets/bootstrap/js/bootstrap.min.js"></script>

    <script>
        $(document).ready(function() {
            $('#tabbar').tab();
            $('#tabbar a').click(function (e) {
                e.preventDefault();
                $(this).tab('show');
            })

            data =
            {
                "timeline":
                {
                    "headline":"The Main Timeline Headline Goes here",
                    "type":"default",
                    "text":"<p>Intro body text goes here, some HTML is ok</p>",
                    "asset": {
                        "media":"http://yourdomain_or_socialmedialink_goes_here.jpg",
                        "credit":"Credit Name Goes Here",
                        "caption":"Caption text goes here"
                    },
                    "date": [
                    {
                        "startDate":"2011,12,10",
                        "endDate":"2011,12,11",
                        "headline":"Headline Goes Here",
                        "text":"<p>Body text goes here, some HTML is OK</p>",
                        "tag":"This is Optional",
                        "classname":"optionaluniqueclassnamecanbeaddedhere",
                        "asset": {
                            "media":"http://twitter.com/ArjunaSoriano/status/164181156147900416",
                            "thumbnail":"optional-32x32px.jpg",
                            "credit":"Credit Name Goes Here",
                            "caption":"Caption text goes here"
                        }
                    }
                    ],
                    "era": [
                    {
                        "startDate":"2011,12,10",
                        "endDate":"2011,12,11",
                        "headline":"Headline Goes Here",
                        "text":"<p>Body text goes here, some HTML is OK</p>",
                        "tag":"This is Optional"
                    }

                    ]
                }
            };

            var config = {
                type:       'timeline',
                width:      '800',
                height:     '600',
                source:     data,
                embed_id:   'my-timeline'
            };

            createStoryJS(config);
        });

    </script>

    <title></title>

</head>
<body>
    <div class="container">
        <ul class="nav nav-tabs" id="tabbar">
            <li class="active"><a href="#entities">Entities</a></li>
            <li><a href="#topics">Topics</a></li>
        </ul>

        <div class="tab-content">

            <div class="tab-pane active" id="entities">

                <div class="row-fluid">
                    1
                    <div id="my-timeline"></div>
                </div>
            </div>

            <div class="tab-pane" id="topics">
                <div class="row-fluid">
                    2   
                </div>
            </div>
        </div>
    </div>

</div>
</body>
</html>
4

1 回答 1

1

好的,我找到了一个似乎可行的解决方法。

而不是这样做:

$(this).tab('show');

在 onclick 处理程序中手动进行切换。

//the previously active tab
var prev = $('#tabbar .active a').attr("href");

//the tab we want to activate
var target = $(e.target).attr('href');

//deactivate the current tab
var p = $('#tabbar a[href="' + prev + '"]')
p.parent().removeClass('active');

//activate the new one          
var n = $('#tabbar a[href="' + target + '"]');
n.parent().addClass('active');

//display the new one
$(prev).hide();
$(target).show();

不过,解决根本原因会更好。

于 2013-07-31T08:52:34.990 回答