4

我有一个使用可排序/嵌套排序的列表。我想要的是返回第二个属性。我的意思是除了默认返回 id (menuItem_n) 之外,我还想返回第二个属性,例如数据类型。我知道我可以自定义属性并更改默认属性(即 id),但是如何添加额外的属性。

例如:

  <ol class="sortable">
    <li id="menuItem_1" data-type="type_1">Item A1</li>
    <li id="menuItem_2" data-type="type_1">Item A2</li>
    <li id="menuItem_3" data-type="type_1">Item A3</li>
    <li id="menuItem_4" data-type="type_2">Item B1</li>
    <li id="menuItem_5" data-type="type_2">Item B2</li>
    <li id="menuItem_6" data-type="type_2">Item B3</li>
  </ol>

然后用类似的东西传递它:

$('ol.sortable').nestedSortable('serialize', {attribute: 'id, data-type'});
4

1 回答 1

1

好的,我错过了有关nestedSortable插件的一些内容。实际上我错过了它,因为它是一个未添加到插件文档中的更新(尚未)。根据此更新,您现在可以将 data-* 属性添加到 li 元素,稍后您可以使用toHierarcy输出返回这些属性。至于例子:

  <ol class="sortable">
    <li id="menuItem_1" data-type="type_1">Item A1</li>
    <li id="menuItem_2" data-type="type_1">Item A2</li>
    <li id="menuItem_3" data-type="type_1">Item A3</li>
    <li id="menuItem_4" data-type="type_2">Item B1</li>
    <li id="menuItem_5" data-type="type_2">Item B2</li>
    <li id="menuItem_6" data-type="type_2">Item B3</li>
  </ol>

所以当你使用时:

$('ol.sortable').nestedSortable('toHierarchy');

您将返回一个字符串,如:

      array (
        'id' => '1',
        'type' => 'type_1',
      ),
      1 => 
      array (
        'id' => '2',
        'type' => 'type_1',
      ),
      2 => 
      array (
        'id' => '3',
        'type' => 'type_1',
      ),
      3 => 
      array (
        'id' => '3',
        'type' => 'type_2',
      ),
      4 => 
      array (
        'id' => '4',
        'type' => 'type_2',
      ),
      5 => 
      array (
        'id' => '5',
        'type' => 'type_2',
      )

当然,之后您必须将字符串转换为数组,这没什么大不了的。只需将结果放入一个变量中,这就是你得到你的数组。请注意,id 仍然是拆分的,因此您只能获得数字部分,但您将获得整个 data-* 属性。

于 2016-08-19T04:07:39.543 回答