如何序列化与 jQueryUI 可排序列表的当前项相关的数据?

发布于 2024-12-11 23:56:21 字数 1644 浏览 0 评论 0原文

我正在使用 jQueryUI 1.8.14。我想实现一个 可排序列表 并在每次用户访问时在我的应用程序数据库中保存相关项目位置更改更改项目位置。

为此,我计划检索并序列化 id 值以及刚刚更改其位置的项目的新位置值(我需要这样做才能生成并准备数据以执行 AJAX HTTP 请求)。无论如何,使用 官方文档 中描述的 serialize 方法,它将序列化所有可提交字符串中的项目 id 值(例如:key=1&key=2&...),但我想仅序列化 当前项目id 值并检索其新的位置值。

我该如何制作\代码?


此时我正在尝试以这种方式实现该功能:

JavaScript代码:

$jQ(function() {
  $jQ("#sortable_list").sortable({
    placeholder: "ui-state-highlight",
    update: function(event, ui) {

      // Here I would like to "serialize" ONLY the current updated item and
      // then perform the AJAX HTTP request

      // alert($jQ("#sortable_list").sortable("serialize"))
      ...
    }
  });
  $jQ( "#sortable_list" ).disableSelection();
});

HTML代码

<ul id="sortable_list">
  <li class="ui-state-default" id="key_1"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
  <li class="ui-state-default" id="key_2"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
  ...
</ul>

例如,如果我更改相关的项目位置到 id="key_2" 我想将该数据序列化为 key=2 (注意:通常 serialize 方法会生成如下数据key=1&key=2&...)。此外,我想包含该项目的当前\新位置(例如:new_position=1)。最后,我想执行包含以下参数的 AJAX HTTP 请求:?key=2&new_position=1

I am using jQueryUI 1.8.14. I would like to implement a sortable list and to save related item position changes in my application database each time an user changes an item position.

To do that I am planning to retrieve and serialize the id value and the new position value of the item that has just changed its position (I need to make that so to generate and prepare data in order to perform an AJAX HTTP request). Anyway, using the serialize method as descibed in the official documentation it will serialize all item id values in a submittable string (eg: key=1&key=2&...), but I would like to serialize only the current item id value and retrieve its new position value.

How can I make\code that?


At this time I am trying to implement that functionality this way:

JavaScript code:

$jQ(function() {
  $jQ("#sortable_list").sortable({
    placeholder: "ui-state-highlight",
    update: function(event, ui) {

      // Here I would like to "serialize" ONLY the current updated item and
      // then perform the AJAX HTTP request

      // alert($jQ("#sortable_list").sortable("serialize"))
      ...
    }
  });
  $jQ( "#sortable_list" ).disableSelection();
});

HTML code

<ul id="sortable_list">
  <li class="ui-state-default" id="key_1"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
  <li class="ui-state-default" id="key_2"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
  ...
</ul>

For istance, if I change the item position related to the id="key_2" I would like to serialize just that data to key=2 (note: generally the serialize method generates data like key=1&key=2&...). Furthermore, I would like to include the current\new position of that item (eg: new_position=1). Finally, I would like to perform the AJAX HTTP request including those parameters: <URL_string>?key=2&new_position=1.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回眸一笑 2024-12-18 23:56:21

测试过http://jsfiddle.net/kRsCE/

$jQ(function() {
  $jQ("#sortable_list").sortable({
    placeholder: "ui-state-highlight",
    update: function(event, ui) {
        var itemid = $(ui.item).attr('id');
        var position;
        $jQ("sortable_list > li").each(function(index) {
            if($(this).attr('id') == itemid) {
               position = index;
               return;
            }
        });
        $.post('yourajaxscript', '&key='+itemid+'&new_position='+position, function(data) {
            //handle response
        });
    }
  });
  $jQ( "#sortable_list" ).disableSelection();
});

Tested it http://jsfiddle.net/kRsCE/

$jQ(function() {
  $jQ("#sortable_list").sortable({
    placeholder: "ui-state-highlight",
    update: function(event, ui) {
        var itemid = $(ui.item).attr('id');
        var position;
        $jQ("sortable_list > li").each(function(index) {
            if($(this).attr('id') == itemid) {
               position = index;
               return;
            }
        });
        $.post('yourajaxscript', '&key='+itemid+'&new_position='+position, function(data) {
            //handle response
        });
    }
  });
  $jQ( "#sortable_list" ).disableSelection();
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文