繁体   English   中英

如何在子进程排序时获取父ID

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM