0

我有两段代码都可以工作。可悲的是,他们没有一起工作。

$(document).ready(function() {
    $("#ui-sortable").live('hover', function() {

        **var string = '';
        var folders = $("[name^='note-behaviour-folder-add']");
        for(var x = 0; x < folders.length; x++){
            if ((folders[x].type === "checkbox") && (folders[x].checked)) {
                string = string.concat("&folders[]=" + folders[x].value);
            }
        }**

        $("#ui-sortable").sortable({
            update: function () {
                $.ajax({
                    type: "POST",
                    url: base_url + "behaviours/folders/jq_set_folder_behaviour_order",
                    data: "&note_id=" + $("#ui-sortable").data("note") + string
                });
            }
        });
    });
});

我需要知道如何使以粗体标记的代码在 sortable() 方法的上下文中工作。

在这里,粗体代码正在做一件事(获取已排序的复选框的值),但直到事后才报告其数据,这意味着发送的排序数据是排序之前的数据。

有任何想法吗?

4

1 回答 1

1

在“更新”回调中拼凑您的查询字符串。这目前最有可能在排序发生之前调用:

$(document).ready(function() {
    $("#ui-sortable").live('hover', function() {

        $("#ui-sortable").sortable({
            update: function () {
                var string = '';
                var folders = $("[name^='note-behaviour-folder-add']");
                for(var x = 0; x < folders.length; x++){
                   if ((folders[x].type === "checkbox") && (folders[x].checked)) {
                      string = string.concat("&folders[]=" + folders[x].value);
                   }
                }
                $.ajax({
                    type: "POST",
                    url: base_url + "behaviours/folders/jq_set_folder_behaviour_order",
                    data: "&note_id=" + $("#ui-sortable").data("note") + string
                });
            }
        });
    });
});
于 2013-05-27T08:31:17.223 回答