如何使用iframe代替div与jquery ui标签?

Col*_*een 1 django jquery-ui django-views jquery-ui-tabs

我有4个标签:

<script type="text/javascript">

    $(document).ready(function(){
        $("#tabs").tabs({cache: true});

    });

</script>

<div id="tabs">
    <ul style="padding: 0; margin: 0;">
        <li class="context-tab" target="story-iframe"><a id="recent-tab" href="/canvas/getstories?context=recent">Recent</a></li>
        <li class="context-tab" target="story-iframe"><a id="popular-tab" href="/canvas/getstories?context=popularity" target="points-view">Popular</a></li>
        <li class="context-tab" target="story-iframe"><a id="random-tab" href="/canvas/getstories?context=random" target="points-view">Random</a></li>
        <li class="context-tab" target="story-iframe"><a id="question-tab" href="/canvas/getstories?context=question">By Question</a></li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

单击选项卡时,它将转到django视图,并且renders_to_response此页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <link rel="stylesheet" href="{{ STATIC_URL }}css/custom-theme/jquery-ui-1.8.16.custom.css">
    <link rel="stylesheet" href="{{ STATIC_URL }}css/ui.slider.extras.css">
    <link rel="stylesheet" href="{{ STATIC_URL }}css/style.css" type="text/css">
    <link rel="stylesheet" href="{{ STATIC_URL }}css/facebook.css" type="text/css">
    <script type="text/javascript" src="https://connect.facebook.net/en_US/all.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}js/jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}js/jquery-ui-1.8.16.custom.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}js/vote.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}js/chart.js"></script>
    <script src="/canvas/schoolsAndMajors.js"></script>

{% block include %}
    {% include 'story-div.html' %}
{% endblock %}

    <script>
        $(document).ready(function(){
            $("#{{ div }}").empty();

            displayStoriesData("{{ div }}", {{ responses|safe }}, {{ scores }}, {{ votes|safe }}, "{{ STATIC_URL }}");
            votehandler_init({{ response_ids }}, []);
            voted_init({{ response_ids }}, []);
        });

    </script>
</head>
<body>


    <div id="{{ div }}"></div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

看起来很完美,但内容被加载到div,而不是iframe,因此,我不能使用重复的id,我想做(因为我的其他一些代码依赖于id是某个特定的办法)

我在网上看到的是页面上的iframe标签与srcs和id设置匹配...但我不确定这是否适合django视图.

编辑:所以我只是尝试在同一页面上的iframe中加载内容... iframe加载到其他内容之下,但是......所以我不确定它会起作用.

EDIT2:它在内容的其余部分之外加载,因为它位于标签div之外...但是当我制作4个iframe时,每个标签一个,它们全部按顺序加载,顺序,并且lis不再是单独的标签....所以我觉得这有点不对劲.

此编辑的代码如下所示:

<div id="tabs">
    <ul style="padding: 0; margin: 0;">
        <li class="context-tab" href="#iframe1"><a id="recent-tab" >Recent</a></li>
        <li class="context-tab" href="#iframe2"><a id="popular-tab">Popular</a></li>
        <li class="context-tab" href="#iframe3"><a id="random-tab">Random</a></li>
        <li class="context-tab" href="#iframe4"><a id="question-tab">By Question</a></li>
    </ul>

    <iframe id="iframe1" src="/canvas/getstories?context=recent" style="width:100%;">
        </iframe>

    <iframe id="iframe2" src="/canvas/getstories?context=popularity" style="width:100%;">
        </iframe>

    <iframe id="iframe3" src="/canvas/getstories?context=random" style="width:100%;">
        </iframe>

    <iframe id="iframe4" src="/canvas/getstories?context=question" style="width:100%;">
        </iframe>
</div>
Run Code Online (Sandbox Code Playgroud)

Pri*_*ark 9

你的href是错误的元素,LI标签没有href.

<div id="tabs">
    <ul style="padding: 0; margin: 0;">
        <li class="context-tab"><a id="recent-tab" href="#iframe1">Recent</a></li>
        <li class="context-tab"><a id="popular-tab" href="#iframe2">Popular</a></li>
        <li class="context-tab"><a id="random-tab" href="#iframe3">Random</a></li>
        <li class="context-tab"><a id="question-tab" href="#iframe4">By Question</a></li>
    </ul>

    <iframe id="iframe1" src="/canvas/getstories?context=recent" style="width:100%;">
        </iframe>

    <iframe id="iframe2" src="/canvas/getstories?context=popularity" style="width:100%;">
        </iframe>

    <iframe id="iframe3" src="/canvas/getstories?context=random" style="width:100%;">
        </iframe>

    <iframe id="iframe4" src="/canvas/getstories?context=question" style="width:100%;">
        </iframe>
</div>
Run Code Online (Sandbox Code Playgroud)

如果你希望它等到用户点击你加载标签内容之前,你可以试试像这个jsfiddle:http://jsfiddle.net/fordlover49/XHD5N/

标记可能是这样的:

 <div id="tabs">
    <ul style="padding: 0; margin: 0;">
        <li class="context-tab"><a id="recent-tab" href="#ui-tabs-0">Hola!</a></li>
        <li class="context-tab"><a id="popular-tab" href="http://jqueryui.com/demos/tabs">jQuery</a></li>
        <li class="context-tab"><a id="random-tab" href="http://www.jsfiddle.net">jsfiddle</a></li>
        <li class="context-tab"><a id="question-tab" href="http://www.bing.com">Bing</a></li>
    </ul>

    <div id="ui-tabs-0"> Select a tab, and watch it load!</div>    
</div>
Run Code Online (Sandbox Code Playgroud)

和JavaScript

$(function() {
    $( "#tabs" ).tabs({
        panelTemplate: "<iframe style='width:100%'></iframe>",
        idPrefix: "ui-tabs-",
        select: function(event, ui) {
            if (!$("#ui-tabs-" + ui.index).prop("src")) {
              $("#ui-tabs-" + ui.index).attr("src", $.data(ui.tab, 'load.tabs'));  
            } 
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 嗨!我看到了这个例子,它就像一个魅力.但我不明白你是如何避免跨域错误的. (2认同)