jquery sortable和guids的问题

Las*_*sse 3 html jquery jquery-ui-sortable

我有

<ul id="test-list" class="ui-sortable" >
   <li id="876e45a4-6a27-4f7b-95ca-9e2500f11801">text1</li>
   <li id="4df36ffb-561a-4eaa-9b1c-9e2500f16d6b">text2</li>
   <li id="cc4a57d5-1567-403c-888f-9e2500f1c171">text3</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

但是$('#test-list').sortable('serialize');这样的字符串: 876e45a4-6a27-4f7b-95ca[]=9e2500f11801&79fbfdf7-e9b1-4e96-8e42[]=9e2400d2abb7&4df36ffb-561a-4eaa-9b1c[]

删除最后12个id的字符

有什么想法吗?

T.J*_*der 5

两件事情:

Sortable.serialize的身份证

你确定Sortableserialize确实你希望它做什么?根据文档,它希望每个可排序元素的ID都在表单中setname_number.ID预计会有一个下划线,但会回退到使用=-; 来自文档:

默认情况下,它通过查看格式为'setname_number'的每个项的id来工作,并且它会发出类似"setname [] = number&setname [] = number"的哈希值.
...他们必须在形式:"SET_NUMBER"例如,ID属性的3元素列表foo_1,foo_5,foo_2将序列化foo[]=1&foo[]=5&foo[]=2.您可以使用下划线,等号或连字符来分隔集合和数字.例如foo=1,foo-1或者foo_1全部序列化为foo[]=1.

(我的重点.)所以没有看到下划线(_),显然它正在回归使用-它看到的最后一个连字符().

id 用于CSS的格式

另外,idCSS使用的值不能以数字开头; 来自规范:

在CSS中,标识符(包括选择器中的元素名称,类和ID)只能包含字符[a-zA-Z0-9]和ISO 10646字符U + 00A1和更高,加上连字符( - )和下划线( _); 它们不能以数字开头,也不能以数字后跟连字符开头.

(这些限制id在HTML中是不正确的,它不能包含空格,并且如果给出则必须至少有一个字符,但CSS更具限制性.)

由于您正在使用带有jQuery的CSS选择器,因此最好确保id属性是有效的CSS.(也许你可以将它们预处理为"G",然后是转换为破折号的GUID x,那样的东西,所以ID等等G876e45a4x6a27x4f7bx95cax9e2500f11801.)然后你会想要给它们一个下划线和后缀.以上.