jQuery UI 手风琴在第一个调用之后初始化后续调用

发布于 2024-11-09 16:38:46 字数 1180 浏览 1 评论 0原文

步骤1:加载一个带有div“foo”和jqote2模板“tmpl_foo”的网页(jqote2是一个基于jQuery的模板系统)。

<div id="foo"></div>

<script type="text/x-jqote-template" id="tmpl_foo">
    <![CDATA[
    <% for (i in this.bar) { %>
            <h3><%= this.bar[i].title %></h3>
            <div class="pane"><%= this.bar[i].desc %></div>
    <% } %>
    ]]>
</script>

第 2 步:通过 jQuery 触发 ajax 查询以从服务器检索数据,使用 jqote2 填充 div“foo”,并在“foo”上初始化 jQuery UI 手风琴。

var get_foo : function () {
    $.ajax({
        url     : url,
        type    : "GET",
        data    : "",
        dataType: "json",
        error   : function() { alert("Error loading html document"); },
        success : function(res) {
            $("#foo").empty().append(
                $('#tmpl_foo').jqote({
                'bar': res.bar
                }) 
            ).accordion();
        }
    });
}

$(document).ready(function() {
    get_foo();
});

它工作得很漂亮。

在网页上,我还有其他链接,例如“上一页”和“下一页”(标准寻呼机功能),它们也会触发 get_foo()。这些操作还会导致正确获取新数据,并且新结果也会正确插入到“foo”中。然而,由于某种原因,手风琴没有被初始化。我很困惑。原因可能是什么?

Step 1: Load a web page with a div "foo" and jqote2 template "tmpl_foo" (jqote2 is a jQuery-based templating system).

<div id="foo"></div>

<script type="text/x-jqote-template" id="tmpl_foo">
    <![CDATA[
    <% for (i in this.bar) { %>
            <h3><%= this.bar[i].title %></h3>
            <div class="pane"><%= this.bar[i].desc %></div>
    <% } %>
    ]]>
</script>

Step 2: Fire an ajax query via jQuery to retrieve data from the server, fill the div "foo" using jqote2, and init the jQuery UI accordion on "foo".

var get_foo : function () {
    $.ajax({
        url     : url,
        type    : "GET",
        data    : "",
        dataType: "json",
        error   : function() { alert("Error loading html document"); },
        success : function(res) {
            $("#foo").empty().append(
                $('#tmpl_foo').jqote({
                'bar': res.bar
                }) 
            ).accordion();
        }
    });
}

$(document).ready(function() {
    get_foo();
});

It works beautifully.

On the web page I also have other links, such as "previous page" and "next page" (standard pager functionality) that also fire get_foo(). These actions also result in getting new data correctly, and the new results are inserted into "foo" correctly as well. However, for some reason the accordion doesn't get initialized. I am stumped. What could the reason be?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

恍梦境° 2024-11-16 16:38:46

您必须首先重置手风琴:

        $("#foo").empty().append(
            $('#tmpl_foo').jqote({
            'bar': res.bar
            }) 
        ).accordion('destroy').accordion();

如果您想保持该状态,您可能需要计算当前的手风琴项目。

You have to reset the accordion first:

        $("#foo").empty().append(
            $('#tmpl_foo').jqote({
            'bar': res.bar
            }) 
        ).accordion('destroy').accordion();

You may need to calculate the current accordion item, if you want to keep that state.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文