【问题标题】:jquery tabs with sortables in separate filesjquery选项卡在单独的文件中排序
【发布时间】:2011-03-31 11:41:25
【问题描述】:

根据这个页面:

http://jqueryui.com/demos/tabs/#ajax

我可以将选项卡的内容放在单独的文件中。这意味着我只需要以下 HTML:

<div id="tabs">
    <ul>
        <li class="tab" id="tab_1"><a href="sortable-0.html">Home</a></li>
    </ul>
</tab>

其中 sortable-0.html 仅包含:

<div class="column" id="column_1">

    <div class="portlet" id="portlet_1">
        <div class="portlet-header">Home 1</div>
        <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
    </div>

</div>

<div class="column" id="column_2">

</div>

<div class="column" id="column_3">

</div>

但是当我这样做时,排序停止工作。如果我将可排序的 HTML 复制回原始文件,它会再次开始工作。

这是当前脚本,其中代码全部在 1 个文件中,因此下面的链接将起作用。但是,如果我将可排序的 HTML 移动到另一个文件中,然后将新文件的 URL 粘贴到 jquery ui tabs html 的以下部分,我将无法使其工作:

<li class="tab" id="tab_1"><a href="sortable-0.html">Home</a></li>

当前工作示例的链接如下:

http://jsfiddle.net/oshirowanen/ZjXz6/

【问题讨论】:

  • 你需要用另一个 div 包装 .column... 所以包装器是可排序的,.column 是它要排序的项目

标签: jquery-ui jquery jquery-ui-tabs jquery-ui-sortable


【解决方案1】:

你必须了解 JS 是如何工作的...如果你调用 .sortable() 函数,它会在你的页面中搜索所有具有“portlet”类的元素并使它们可排序。

但是:使用 Ajax,您可以执行以下操作:加载页面,调用您的可排序函数,它将搜索类“portlet”的所有元素并使它们可排序,然后您通过 ajax 加载您的内容......您之前的可排序调用对您的新内容无效。这意味着,如果您通过 ajax 加载数据,则需要在成功加载内容后再次调用 .sortable() :)

看看你是否可以添加这样的东西:

$("#tabs").tabs({
    ajaxOptions: {
        success: function(){
            $(".column").sortable({
                connectWith: '.column'
            });
        }
    }
});

【讨论】:

  • 尝试替换你的 $("#tabs").tabs();使用我发布的代码:)
  • 这行得通,但似乎每次单击选项卡时都会重新加载选项卡内容。默认行为只是在每个会话中加载一个选项卡,可以多次单击该选项卡,而无需再次往返服务器。
  • 没关系,添加了 cache: true 选项,它正在按照我想要的方式工作!谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多