jQueryUI可排序更改事件在单次更改时多次触发

时间:2012-09-20 10:32:00

标签: javascript jquery jquery-ui jquery-ui-sortable

链接到jsFiddle:http://jsfiddle.net/k8wYF/1/(正在工作)

var count;
$("#sortable").sortable({
    start : function(){
               count = 0;
            },
    change : function(){
                 count++;                
            },
    stop : function(){
                 alert(count);          
            }
});
$("#sortable").disableSelection();​

单次更改

count : 1

但是,我想在sortableStart上刷新sortable

链接到jsFiddle:http://jsfiddle.net/k8wYF/(不工作)

var count;
$("#sortable").sortable({
    start : function(){
               $("#sortable").sortable("refresh");       //refresh sortable
               count = 0;
            },
    change : function(){
                 count++;                
            },
    stop : function(){
                 alert(count);          
            }
});
$("#sortable").disableSelection();​

然后,单次更改

count : 16  (multiple times)

1 个答案:

答案 0 :(得分:4)

来自docs

更改

  

此事件在排序期间触发,但仅在DOM位置时触发   已经改变了。

<强>刷新

  

刷新可排序的项目。自定义触发所有的重新加载   可排序的项目,导致新项目被识别。

您所经历的是正常的。刷新时,所有项目都会移动到预期位置,改变DOM,从而每次触发更改的事件。

如果要向更改事件添加代码,请确保它是您希望在每次更改时执行的代码。

如果要添加代码仅在排序完成时执行,请将其添加到stopupdate

<强>更新

  

当用户停止排序和DOM时,会触发此事件   职位已经改变。

<强>停止

  

排序停止时会触发此事件。

根据代码的作用,请确保将其添加到相应的事件中。