【问题标题】:jquery Ajax sortable list stops being sortable when Ajax call updates the list html当Ajax调用更新列表html时,jquery Ajax可排序列表停止可排序
【发布时间】:2010-05-11 00:30:22
【问题描述】:

我正在使用 jquery 1.4.2 并尝试实现以下目标:

1 - 向 php 页面发送值以添加/删除项目的函数调用

2 - 返回项目的 html 列表

3 - 列表应该仍然是可排序的

4 - 点击保存(序列化列表)

我的完整 WIP 位于此处 [http://www.chittak.co.uk/test4/index_nw3.php][1]

我试图从 UL 上方的级别进行委派,但我无法让它工作

$("#construnctionstage").delegate('ul li', 'click', function(){

初始列表是可排序的,当您单击添加/删除时,ajax 函数会返回一个包含多个项目的新列表,但我做错了,因为警报消息继续工作,而列表不再可排序。

$(document).ready(function(){

  $('ul').delegate('li', 'click', function(){

      alert('You clicked on an li element!');
    /*$("#test-list").sortable({
      handle : '.handle',
      update : function () {
          var order = $('#test-list').sortable('serialize');
        $("#info").load("process-sortable.php?"+order);
      }
    });*/
}).sortable({
      handle : '.handle',
      update : function () {
          var order = $('#test-list').sortable('serialize');
        $("#info").load("process-sortable.php?"+order);
      }
   });

});

<div id="construnctionstage"> <ul id="test-list"> <li id="listItem_1">

【问题讨论】:

    标签: jquery delegates jquery-ui-sortable


    【解决方案1】:

    添加/删除新元素后,您需要再次调用 .sortable() 。在 jQuery.ajax 中的“成功”处理程序上执行此操作。

    【讨论】:

    • 我按照建议添加到成功,请参阅下面哪个 99% 有效 function PlanBuilder( id, name, planfunction ) { jQuery.ajax({ type: "POST", url: "ajax2.php",数据:“id=" + id + "&name=" + name + "&planfunction=" + planfunction, 成功:function(data) { $('div#construnctionstage ul#test-list').html(data).sortable ({ 句柄 : '.handle', 更新 : function () { var order = $('#test-list').sortable('serialize'); $("#info").load("process-sortable. php?"+order); } }); } }); }
    • 在带有 Firebug 的 IE 和 Firefox 中执行我想要的操作,但给出了我无法解决的错误:消息:预期对象行:29 字符:59 代码:0 URI:chittak.co.uk/test4/jquery-ui-1.8.1.custom.min.js this .options 是未定义的第 29 行但是关闭了萤火虫,页面可以工作! ???我将 ajax2.php 更改为仅返回 li html 而不是 ul->li 整个部分,因为这似乎有效。当我用 li 返回整个 ul 时,无论我尝试什么组合,似乎都无法使 li 元素可排序。感谢您到目前为止的帮助。
    • 如果你在再次调用 sortable() 之前尝试: $('div#construnctionstage ul#test-list').sortable('destroy') 会发生什么?
    • 我添加了该行,IE 和 Firebug 中的错误消失了。奇怪的是,在您的建议之前我还发现,如果我将 ui 版本更改为 1.7.1,那么错误就消失了。我是 Jquery 的新手,所以感谢您的帮助,我一直在努力寻找与我想要创建的内容一样多的教程。
    • 现在我将尝试在
    • 中的内容中添加“就地编辑”功能,感谢收到任何关于合适示例的建议,到目前为止,我正在尝试 papermashup.com/jquery-and-php-inline-editing 但是我需要制定绑定或了解如何使用委托重写它(以便在 ajax 请求发生后它可以工作
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签