【问题标题】:Sortable Not Working after Refresh Sortable Div刷新可排序 div 后可排序不工作
【发布时间】:2013-01-07 17:26:47
【问题描述】:

我有 2 个 jQuery 函数,一个允许排序,另一个允许从列表中的 div 中删除。一切正常,直到我删除其中一个列表项。然后拖动停止工作,直到我刷新页面。

我也遇到了删除功能不会立即删除单击要删除的div的问题,如果单击多个,只会删除最近的一个。这就是为什么在下面的delete函数中刷新div的原因。

任何帮助将不胜感激!

JQuery 可排序

    $(document).ready(function(){   
          function slideout(){
      setTimeout(function(){
      $("#response").slideUp("slow", function () {
          });

    }, 2000);}

        $("#response").hide();
        $(function() {
        $("#list ul").sortable({ opacity: 0.8, cursor: 'move', update: function() {

                var order = $(this).sortable("serialize") + '&update=update'; 
                $.post("updateReadingList.php", order, function(theResponse){
                    $("#response").html(theResponse);
                    $("#response").slideDown('slow');
                    slideout();
                });                                                              
            }                                 
            });
        });

    }); 

JQuery 删除函数

    $(document).ready(function(){ $(function() {
        $( '#reading' ).on( 'click', 'a.deletefromrl', function(){
            $(this).closest('li').fadeOut('slow');
            var order = $('#list ul').sortable("serialize") + '&update=update' + '&id=' + $(this).attr('data-storyid'); 
            $.post("deletefromReadingList.php", order, function(theResponse){
                    $("#response").html(theResponse);
                }); 
                var auto_refresh = setInterval(
                    function()
                    {
                        $('ul').load('reloadReadingList.php');
                    }, 0);  
        })
    })
    })

【问题讨论】:

  • 当您在删除函数中重新加载列表时,您可能应该考虑重新绑定可排序列表。那应该可以正常工作。
  • 我该怎么做?对不起,我对 JQuery 很陌生。感谢您的帮助!

标签: jquery html refresh jquery-ui-sortable


【解决方案1】:

一种解决方案是将绑定操作放在它自己的函数中,并在页面加载时调用它,然后每次重新加载列表时调用它:

已编辑: 我不确定最后一个出了什么问题,但这似乎对我有用:

$(document).ready(function(){   
  function slideout(){
      setTimeout(function(){
      $("#response").slideUp("slow", function () {
          });

    }, 2000);}

    function bindSortable()
    {
        $("#list ul").sortable(
        { 
            opacity: 0.8, 
            cursor: 'move', 
            update: function() {

                var order = $(this).sortable("serialize") + '&update=update'; 
                $.post("updateReadingList.php", order, function(theResponse){
                    $("#response").html(theResponse);
                    $("#response").slideDown('slow');
                    slideout();
                });                                                              
            }                                 
        });
    }

    bindSortable();

    $( '#reading' ).on( 'click', 'a.deletefromrl', function(){
        $(this).closest('li').fadeOut('slow');
        var order = $('#list ul').sortable("serialize") + '&update=update' + '&id=' + $(this).attr('data-storyid'); 
        $.post("deletefromReadingList.php", order, function(theResponse){
                $("#response").html(theResponse);
            }); 
            var auto_refresh = setInterval(
                function()
                {
                    $('ul').load('reloadReadingList.php', function()
                    {
                        bindSortable();
                    });
                }, 0);  
    })
}); 

【讨论】:

  • 这个不行,因为某些原因禁用了拖放等功能。
  • 我已经编辑了解决方案,新的解决方案适合我。你试过在FireBug调试它吗?
  • 我现在正在尝试,但我真的不知道我在做什么或发生了什么。这是我正在处理的网站:www.cgrtutoring.com/index7.php 有我的代码,www.cgrtutoring.com/index9.php 有上面的代码。但是当我调试 index7.php 时它只是说 log maxed out GET reload script 然后它显示查询 ui 所在的第 2 行,但我不知道这是什么意思
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
相关资源
最近更新 更多