【问题标题】:sortable does not work in ajax tabssortable 在 ajax 选项卡中不起作用
【发布时间】:2012-05-29 07:14:26
【问题描述】:

在我的页面中,我使用prototypejs 使用Ajax 选项卡。其中一个包括一个可排序的。虽然 sortable 单独工作, 当我将它放入选项卡时,它不起作用。我怎么解决这个问题?谢谢。

我的标签如下:

<div id="container">
<div class="tabs" id="tab1">Tab 1</div>
<div class="tabs" id="tab2">Tab 2</div>
<div class="tabs" id="tab3">Tab 3</div>
</div>

我的排序列表如下:

<ul id="list">
    <li>now</li>
    <li>works</li>
    <li>this</li>
</ul>

<script type="text/javascript">
    Sortable.create("list");
</script>

我的ajax函数如下

function init () {

    var tabs = document.getElementsByClassName('tabs');
   for (var i = 0; i < tabs.length; i++) {
    $(tabs[i].id).onclick = function () {
        getTabData(this.id);
    }
}
}
function getTabData(id) {
var url = 'demos/ajax-tabs/process.php';
var rand = Math.random(9999);
var pars = 'id=' + id + '&rand=' + rand;

var myAjax = new Ajax.Request( 
        url, {
              method: 'get', 
              parameters: pars, 
              onLoading: showLoad, 
              onComplete: showResponse
              });

}
function showLoad () {
$('load').style.display = 'block';
    Sortable.create("list");

}
function showResponse (originalRequest) {
//Sortable.create("list");
var newData = originalRequest.responseText;
$('load').style.display = 'none';
$('content').innerHTML = newData;


}
init();

【问题讨论】:

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


    【解决方案1】:

    如果你调用 Sortable.create("list");函数,它将在您的页面中搜索所有 id 为“list”的元素,使它们可排序。

    但是:使用 Ajax,您需要在成功加载内容后再次调用 Sortable.create(),因为您需要再次将 sortable 应用于新内容。

    function showResponse (originalRequest) {
        var newData = originalRequest.responseText;
        $('load').style.display = 'none';
        $('content').innerHTML = newData;   // make sure that newData contains <ul id="list">.....</ul>
        Sortable.create("list");
    }
    

    【讨论】:

    • 我将在哪里再次调用 sortable.create?
    • 关于ajax调用成功函数。
    • 我写了这个,但没有任何改变。var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onLoading: showLoad, onComplete: showResponse} );function showResponse ( originalRequest) { var newData = originalRequest.responseText; $('load').style.display = 'none'; $('content').innerHTML = newData; Sortable.create("list"); }
    • 我已经添加了ajax功能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2015-09-30
    • 2016-08-10
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    相关资源
    最近更新 更多