我有一个nestedSortable列表,其中我不允许嵌套具有相同名称的项目(可能是id,无论如何).我正在使用beforeStop()方法获取当前元素的名称及其父元素的名称(因为当它嵌套时,它获取表单:)
<ol class="sortable">
<li><div id="1">Item</div>
<ol>
<li>
<div id="2">Item</div>
</li>
</ol>
</li>
</ol>
Run Code Online (Sandbox Code Playgroud)
请注意,我使用div元素作为句柄.我初始化nestedSortable的代码是
$('ol.sortable').nestedSortable({
disableNesting: 'no-nest',
forcePlaceholderSize: true,
handle: 'div',
helper: 'clone',
items: 'li',
maxLevels: 5,
opacity: .6,
placeholder: 'placeholder',
revert: 250,
tabSize: 25,
tolerance: 'pointer',
toleranceElement: '> div',
beforeStop: function(event, ui){ // disallows two elements with the same part number from nesting
var thisName = ui.item[0].firstChild.innerHTML;
var parentName = ui.item[0].parentElement.parentElement.firstChild.innerHTML;
if (thisName == parentName){
$(this).sortable('cancel');
}
}
});
Run Code Online (Sandbox Code Playgroud)
这段代码可以禁止嵌套具有相同名称的项目,如果我控制台记录移动的元素及其祖父母,我可以看到我引用了正确的元素.但是,在调用sortable('cancel')后,我也得到以下控制台错误,这自然会炸掉IE:
未捕获的TypeError:无法调用null的方法'removeChild'
jquery-ui-1.8.12.custom.min.js
Run Code Online (Sandbox Code Playgroud)
d.widget._clear
jquery-ui-1.8.12.custom.min.js:269
Run Code Online (Sandbox Code Playgroud)
$ .widget.$.extend._clear
jquery.ui.nestedSortable.js:305
Run Code Online (Sandbox Code Playgroud)
d.widget._mouseStop
jquery-ui-1.8.12.custom.min.js:237 …Run Code Online (Sandbox Code Playgroud) 我是Knockout的新手(几天),我正在尝试重新编写一个具有嵌套可排序列表的页面来使用它.
我在这里找到了使用Knockout可排序列表的一个很好的答案:针对jQuery UI的Knockout自定义绑定可排序 - 奇怪的行为
但是,我无法使用嵌套的可排序列表.尝试单击并拖动根列表下方的任何项目都会拖动关联的根项目.换句话说,嵌套列表根本不起作用.
上述解决方案中的第二个选项就是我的选择.这对我来说似乎是最简单和最清晰的.是否有一种相对简单的方法将其应用于嵌套排序?
我找到了一个名为nestedSortable的精彩jquery插件,效果很好.现在我需要做的就是使用新的排序顺序更新我的数据库.我正在使用PHP.
这是我感到困惑的地方.在提供的示例中,有三种获取输出的方法.序列化,层次结构和数组.
如何修改javascript以允许我将输出发送到PHP以通过POST进行处理?
我已经阅读了整个插件论坛,并从想要这个功能的人那里找到了一个保存功能形式的希望.不幸的是它是BYO getItemIdFromElement($element)和插件的开发者说他的阵列功能与更干净的代码做了完全相同的事情......
如果有人能帮助我理解这一点,我希望并真的很感激!
蒂姆
这是我在使用codeigniter的自定义cms创建中首次使用nestedsortable.js,所以我将它与Codeigniter php框架一起使用.我有一个有序和嵌套的列表(对于订单页面)我需要将此列表转换为带有'toArray'的数组,但它不能正常处理错误消息:uncaught typeError:无法调用undefined的方法'match'这是我的js代码:
<script>
$(document).ready(function(){
$.post('<?=base_url("index.php/admin/pages/order_ajax"); ?>',{},function(data){
$('#orderResult').html(data);
});
$('#save').click(function(){
oSortable = $('.sortable').nestedSortable('toArray');
$.post('<?=base_url("index.php/admin/pages/order_ajax"); ?>',{sortable:oSortable},function(data){
$('#orderResult').html(data);
});
});
});
Run Code Online (Sandbox Code Playgroud)
除了一切都很好,所以我需要你的帮助
我在一个项目中使用 jQuery nestedSortable 插件。移动列表项时,我会序列化该数组并将其保存到我的数据库中。我无法从 PHP 数组重新创建 HTML 列表。可能是因为晚了。:)
我有以下 PHP 数组:
Array
(
[list_4] => root
[list_3] => 4
[list_1303966373] => 3
[list_1] => 1303966373
[list_5] => 1
[list_2] => 1
[list_6] => root
)
Run Code Online (Sandbox Code Playgroud)
它应该列出一个类似...
<ol>
<li id='list_4'>value 4
<ol>
<li id='list_3'>value 3
<ol>
<li id='list_1303966373'>value 1303966373
<ol>
<li id='list_1'>value 1
<ol>
<li id='list_5'>value 5</li>
<li id='list_2'>value 2</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
<li id='list_6'>value 6</li>
</ol>
Run Code Online (Sandbox Code Playgroud)
(忽略这些值,它们只是为了展示。)
HTML 列表可以有任何深度的嵌套列表。
我的大脑已经死了,我无法让它工作。有人有建议吗?我将永远欠你饼干。还有一座城堡。
谢谢。:)
我有以下列表:
<ol class="sortable ui-sortable">
<li id="list_1608"><div>One</div></li>
<li id="list_1609"><div>Two</div></li>
<li id="list_1610"><div>Three</div></li>
</ol>
Run Code Online (Sandbox Code Playgroud)
我希望得到id任何li被点击的内容.我尝试了以下代码,但没有得到警报.
$("li").click(function() {
var myid = $(this).attr("id");
alert(myid);
});
Run Code Online (Sandbox Code Playgroud)
我将它与nestedSortable jQuery插件结合使用.
我哪里错了?
好的更多信息,列表项是在加载dom后添加的.
如果项目加载开始它确实有效,请道歉.
jquery ×5
javascript ×2
arrays ×1
codeigniter ×1
html ×1
jquery-ui ×1
knockout.js ×1
list ×1
php ×1