获取jQuery UI排序后的ID数组
Get array of IDs after jQuery UI Sortable
我使用的是jQuery UI可拖动和可排序的函数,我是这方面的新手。左边是项目列表(从数据库生成),右边是用户可以拖放的框。删除时/删除后,用户可以对它们进行排序。
以下是完整预览:http://jsbin.com/oBeXiko/3
问题:排序后,如何获取每个框中元素的ID数组?
我尝试过.sortable("toArray")和sortable("serialize"),但都返回空字符串。
简单HTML
<div id="raspored">
<div class="left">
<ul id="kanta">Delete</ul>
<ul id="lista_predmeta" class="droptrue">
<li class="predmet ui-state-default" predmet-id="id_1">Item_1</li>
<li class="predmet ui-state-default" predmet-id="id_2">Item_2</li>
<li class="predmet ui-state-default" predmet-id="id_3">Item_3</li>
<li class="predmet ui-state-default" predmet-id="id_4">Item_4</li>
</ul>
</div>
<div class="right">
<ul class="raspored" razred="1">I</ul>
<ul class="raspored" razred="2">II</ul>
<ul class="raspored" razred="3">III</ul>
<ul class="raspored" razred="4">IV</ul>
</div>
</div>
我的jQuery函数
$(document).ready(function() {
var url = "";
var raz = 0;
$( ".raspored" ).sortable({
cursor: 'move',
opacity: 0.65,
stop: function ( event, ui){
var data = $(this).sortable('toArray');
console.log(data); // This should print array of IDs, but returns empty string/array
}
});
$(".raspored").droppable({
accept: ".predmet",
drop: function(event, ui){
ui.draggable.removeClass("predmet");
ui.draggable.addClass("cas");
raz = $(this).attr("razred");
}
});
$(".predmet").draggable({
connectToSortable:".raspored",
helper: "clone",
revert: "invalid",
stop: function(event, ui){
var predmet = $(this).attr("predmet-id") ;
console.log( "PredmetID = " + predmet + " | RazredID = " + raz);
}
});
$("#kanta").droppable({
accept: ".cas",
drop: function(event, ui){
ui.draggable.remove();
}
});
$( ".raspored, .predmet, .cas, #kanta, #lista_predmeta" ).disableSelection();
});
调用toArray
时,可以传递带有attribute
字段的选项对象。此attribute
字段定义toArray
调用中使用的属性。例如:
var data = $(this).sortable('toArray', { attribute: 'predmet-id' });
这将为您提供一个项目的predmet-id
属性数组。请参阅toArray
文档。
请注意,默认的attribute
是id
,这就是为什么您的数组之前返回了空字符串——您的元素都没有id
属性!
使用适合我的序列化。下面是可能对您有所帮助的示例代码。
<ul id="sortable">
<li id="ID_11" class="ui-state-default">sai</li>
<li id="ID_21" class="ui-state-default">2</li>
<li id="ID_3" class="ui-state-default">3</li>
<li id="ID_4" class="ui-state-default">4</li>
<li id="ID_5" class="ui-state-default">5</li>
<li id="ID_6" class="ui-state-default">6</li>
<li id="ID_7" class="ui-state-default">7</li>
<li id="ID_8" class="ui-state-default">8</li>
<li id="ID_9" class="ui-state-default">9</li>
<li id="ID_10" class="ui-state-default">10</li>
<li id="ID_11" class="ui-state-default">11</li>
<li id="ID_12" class="ui-state-default">12</li>
</ul>
<a href="javascript:void(0);" onClick="saveDisplayChanges();">Save</a>
<span id="categorysavemessage"></span>
Javascript代码是:
<script>
$(function() {
$( "#sortable" ).sortable();
});
function saveDisplayChanges()
{
var order = $("ul#sortable").sortable("serialize");
var a = "hello";
var b = "hi";
$.post("update_displayorder.php?"+order+"&a=hello"+"&b=developer",{abc:a,xyz:b},function(theResponse){
$("#categorysavemessage").html(theResponse);
});
}
</script>
用于获取带有其他信息的订单数据的Php脚本update_displayorder.php脚本为:
<?php
echo "<pre>";
print_r($_REQUEST);
$newOrder = $_POST['ID'];
$counter = 1;
foreach ($newOrder as $recordIDValue) {
echo $counter .' '. $recordIDValue .'<br/>';
$counter ++;
}
?>
相关文章:
- 保存id数组's而不是对象
- 将对象数组与id数组进行比较
- 使用Javascript向ID数组发送通知时出现Facebook访问令牌错误
- 如何将id数组与带下划线的对象数组嵌套属性进行比较
- 获取jQuery UI排序后的ID数组
- 在主干网中过滤的 ID 数组上使用 .set
- 如何使用带有复选框的事件触发器访问 ID 数组
- 带有谷歌地球 API 的地标 ID 数组
- 使用 jQuery 使用 id 数组选择元素
- 从另一个表中获取 ID 数组的值
- 将应用请求对话框发送到特定的 id 数组
- 我正在尝试遍历 id 数组,如果不存在 id,则插入一个 mongodb 文档.我怎样才能让他们坚持下去
- 来自不同集合的子文档 ID 数组的猫鼬架构
- 如何将 ID 数组与包含其 ID 作为属性名称一部分的对象属性进行匹配
- 当使用sequelize.js给一个id数组时进行多次删除
- 从id数组到名称数组(mongo,nodejs)
- 循环遍历DIV id数组,并每隔x秒刷新这些DIVS
- 获取javascript中id数组相似的所有元素
- 在MongoDB中输入用户名数组,并返回相同大小的id数组,对于不存在的用户名为null或false
- 通过对象列表将 ID 数组映射到字符串数组