2012-02-07 70 views
1

我有一个项目列表,我需要记录它在列表中的位置 - 即排序顺序,我正在运行下面的代码绑定停止事件 - 但有180个字段,这是我的机器上相当慢,可以优化吗?优化/改善客户端代码

$(".survey-fields").bind("sortstop", function(event, ui) { 
     $(".report-field").each(function(i) { 
      $(".sorted-fields").find("#" + $(this).data("field-id")).val(i + 1); 
     }); 
    }); 

代码解释: 我可排序的div的列表,每个div有一个id(DB唯一的ID,一个数字),然后我有一个隐藏的另一个列表,我复制了新的位置进入相关字段

在我现在使用字段名称作为字符串而不是id之前,不确定是否使它非常缓慢。我有jQuery UI的16年1月8日

<div data-field-id="41" class="display-wrapper report-field"> 
    <div class="field-header field-move"> 
     <span>name: fieldname</span> | <span>max length: 
       100</span><span class="ui-icon ui-icon-carat-2-n-s field-icon field-toggle" title="show/hide details of this field"></span> 
    </div> 
<div> whatever here... 
    </div> 
</div> 

任何其他解决方法,我可以做...基本上,我需要通过ajax要求

回答

0

很难说没有送ID列表和它们的排序顺序我controller适当的分析。这

$(".sorted-fields").find("#" + $(this).data("field-id")) 

可以简化为只

$("#" + $(this).data("field-id")) 

因为ID是(应该是)唯一的文档范围。另一个想法:如果你反正使用ajax,填充表单字段有什么意义?为什么不使用一个简单的对象,它可以发送到json服务器。像

var sortOrder = {} 

    $(".report-field").each(function(i) { 
     sortOrder[$(this).data("field-id")] = i + 1; 
    }); 
+0

如果我想发送字段id与其位置一起,我将如何填充json? – Haroon 2012-02-07 16:18:28

+0

这就是上面的代码所做的。 – georg 2012-02-07 16:19:22