[英]How to get the parent id when the child is sort
这个问题与此有关: 如何在排序后显示父级的新顺序?
我已经解决了上面的问题。 现在我想在孩子排序时获得父ID。
示例:当我将水交换到电力时,
<li id="1">
<span class="cat-title">Utilities</span>
<ul class="dropenv mt">
<li class="innerList">Electricity</li>
<li class="innerList">Water</li>
<li class="innerList">Trash</li>
<li class="innerList">Television</li>
</ul>
</li>
输出必须是,
1_Electricity
1_Water
1_Trash
1_Television
因为1是Utilities的id
以下是代码:
[.............]
var parentID;
var origColor;
$(".dropenv").sortable({
connectWith: "ul.env-data",
dropOnEmpty: true,
start: function(event, ui) {
origColor = ui.item.text();
//this is the id that produce undefined value
parentID = ui.item.parent().siblings('li').attr('id');
},
stop: function(event, ui) {
var order = [];
ui.item.closest('ul').children('li').each(function() {
order.push($(this).data('position'));
var c = $(this).text();
var z = parentID;
//if (c === origColor) {
// var z = origTitle;
//} else {
// var z = $(this).parent().siblings('.cat-title').text();
//}
$("#cl").append(z + "_" + c + "<br /\>");
});
}
});
[.............]
以上代码产生未定义的值:
undefined_Electricity
undefined_Water
undefined_Trash
undefined_Television
如何获得确切的父ID?
尝试
parentID = ui.item.closest('li[id]').attr('id');
另一个完整的解决
$("#sortable").sortable({
connectWith: "ul.env-data",
dropOnEmpty: true,
stop: function(event, ui) {
var parentId = ui.item.parent().closest('li').attr('id');
// Or this
//var parentId = ui.item.closest('li[id]').attr('id');
ui.item.closest('ul').children('li').each(function() {
var $this = $(this);
var text = $this.data('text');
if(!text){
text = $this.text();
$this.data('text', text);
}
$this.text(parentId + '_' + text)
});
}
});
演示: 小提琴
你的项目是<ul class="dropenv mt">
..转到parent(li)
并获取id
..不需要sibling()
;
尝试这个
var parentID ="";
parentID = ui.item.parent('li').attr('id');
使用默认值初始化parentID。 var parentID ='';
然后搜索父母。
parentID = ui.item.parent().parent('li').attr('id');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.