在Jquery中单击第一个级别节点时,仅必须删除Tree View的最后一个级别节点

用户123

每当我单击复选框时,它都包含任何子项“ UL”,而该“ LI”是最后一个子项,那么,我需要复制此UL子项,只有“ SPAN”需要复制并将其粘贴到目标文件夹。我尝试了下面的代码。

目的:每当我按下包含任何子ul的复选框时,如果它最后一个子ul,则应将其复制。

在此列表中,如果单击Node 1.1.1', Node 1.1.2 etc,则它应仅复制节点1.1.1,节点1.1.2等

在此列表中,如果我单击,Node 1.1则它应仅复制节点1.1.1,节点1.1.2等。

在此列表中,如果我单击,Node 1.2, Node 1.3 etc[Here It does not have descendant]则它应仅复制Node 1.2,Node 1.3等。而不能复制“ Node 1.1”,因为它具有后代。

在这份名单中,如果我点击,'Node 1'那么,它应该复制Node 1.1.1, Node 1.1.2, Node 1.1.3, Node 1.1.4 and Node 1.1.5然后Node 1.2[not 1.1 because it has descendant], Node 1.3, Node 1.4, Node 1.5 and Node 1.6

任何的想法?请。

<div class="form-group floatleft10" id="tree">
    <ul>
        <li>
            <input type="checkbox" value="Node 1" /><span>Node 1</span>
            <ul>
                <li>
                    <input type="checkbox" value="Node 1.1" /><span>Node 1.1</span>
                    <ul>
                        <li>
                            <input type="checkbox" value="Node 1.1.1" /><span>Node 1.1.1</span></li>
                        <li>
                            <input type="checkbox" value="Node 1.1.2" /><span>Node 1.1.2</span></li>
                        <li>
                            <input type="checkbox" value="Node 1.1.3" /><span>Node 1.1.3</span></li>
                        <li>
                            <input type="checkbox" value="Node 1.1.4" /><span>Node 1.1.4</span></li>
                        <li>
                            <input type="checkbox" value="Node 1.1.5" /><span>Node 1.1.5</span></li>
                    </ul>
                </li>
                <li>
                    <input type="checkbox" value="Node 1.2" /><span>Node 1.2</span>

                </li>
                <li>
                    <input type="checkbox" value="Node 1.3" /><span>Node 1.3</span>

                </li>
                <li>
                    <input type="checkbox" value="Node 1.4" /><span>Node 1.4</span>

                </li>
                <li>
                    <input type="checkbox" value="Node 1.5" /><span>Node 1.5</span>

                </li>
                <li>
                    <input type="checkbox" value="Node 1.6" /><span>Node 1.6</span>

                </li>
            </ul>
        </li>
        <li>
            <input type="checkbox" value="Node 2" /><span>Node 2</span>
            <ul>
                <li>
                    <input type="checkbox" value="Node 2.1" /><span>Node 2.1</span>

                </li>
                <li>
                    <input type="checkbox" value="Node 2.2" /><span>Node 2.2</span>

                </li>
            </ul>
        </li>
    </ul>
</div>


<div class="form-group floatleft13" id="checkbox-content"></div>

jQuery的

(function ($) {

    $('div#tree input[type="checkbox"]').click(function () {

        var $list = $("div#checkbox-content");
        var $currElem = $(this).clone();
        var $currElemNext = $(this).next().clone();
        var $curElemVal = $(this).attr("value");
        var $curElemValAdd = "";
        var $curElemValNext = $(this).next().text();
        if ($(this).parent().children("ul").children("li").prop('tagName') == undefined && $(this).parent().children("ul").prop('tagName') == undefined) {
            console.log($(this).val());
            $list.append($('<div data-value="' + $(this).val() + '"></div>').append($currElemNext));
            var $thisTempAdd = $(this).val();
            var $currElemSiblngs = $(this).parent().clone();
            //$currElemSiblngs.find(":checkbox").remove();
            var newCopiedElements = $currElemSiblngs.find("span.daredevel-tree-label").clone();
            var $tempVal = $(this).html();
            //$curElemValAdd += '<div class="try"><span>'+ $tempVal +'</span></div>';
            console.log("Here");
            $list.find("div").filter(function () { return $(this).data('value') === $thisTempAdd });
        }
            /// Second Level

        else if ($(this).parent().children("ul").children("li").prop('tagName') == "LI" && $(this).parent().children("ul").prop('tagName') == "UL") {
            //console.log();
            var $currParent = $(this).parent().prop('tagName');
            if ($(this).parent().has('ul') && $(this).parent().children('ul').parent().prop('tagName') == $currParent) {
                console.log("dshdsdhdd");
                var $currElemSiblngs = $(this).parent().children('ul').children("li");
                //$currElemSiblngs.find(":checkbox").remove();
                var newCopiedElements = $currElemSiblngs.find("span.daredevel-tree-label").clone();
                var $curElemValAdd = "";
                $(newCopiedElements).each(function () {
                    var $tempVal = $(this).html();
                    console.log($(this).text());
                    $curElemValAdd += '<div data-value="' + $(this).text() + '"><span>' + $tempVal + '</span></div>';

                });
                $list.append($curElemValAdd);
            }
        }
            /// First Level
        else if ($(this).parent().children("ul").children("li").children("ul").children("li").prop('tagName') == "LI") {
            var $currParent = $(this).parent().prop('tagName');
            if ($(this).parent().children("ul").children("li").children("ul") && $(this).parent().children("ul").children("li").children("ul").children("li").prop('tagName') == $currParent) {
                console.log("dshdsdhddHHHHHHHHHHH");
                var $currElemSiblngs = $(this).parent().children("ul").children("li").children("ul");
                //$currElemSiblngs.find(":checkbox").remove();
                var newCopiedElements = $currElemSiblngs.find("span.daredevel-tree-label").clone();
                var $curElemValAdd = "";
                $(newCopiedElements).each(function () {
                    var $tempVal = $(this).html();
                    console.log($(this).text());
                    $curElemValAdd += '<div data-value="' + $(this).text() + '"><span>' + $tempVal + '</span></div>';

                });
                $list.append($curElemValAdd);
            }

        } else if (!this.checked) {
            //alert("new function");
            var thisTemp = $(this).val();
            //console.log(thisTemp);
            $list.find("div").filter(function () { return $(this).data('value') === thisTemp }).remove();
        }
        else if (this.checked) {
            $list.append($('<div></div>').append($currElemNext));
            //$list.append($currElemNext);
        } else {
            //hide to the right
            $list.find('span').filter(function () {
                console.log($curElemVal);
                console.log($curElemValAdd);
                return ($(this).text() === $curElemVal || $(this).text() === $curElemValAdd)
            }).slideUp("fast", function () {
                //$(this).next('span').remove();
                $(this).remove();
                //alert("2");
            });
        }
    });
})(jQuery);
伯兰德

更新

检查一下:https : //jsfiddle.net/b36921na/3/

(function ($) {

    $('div#tree input[type="checkbox"]').click(function () {
        $('#checkbox-content').text('');
        printNodeValues($(this));

    });

})(jQuery);

function printNodeValues(element) {

    if (element.parent().children('ul').length > 0) {
        element.parent().children('ul').children('li').each(function() {
            printNodeValues($(this).children('input'));
        });  
    } else {
        $('#checkbox-content').html($('#checkbox-content').html() + "<br />" + element.val());
    }
} 

上面的代码使用递归。如果这不是您想要的,请让我知道单击节点1,节点1.1,节点1.1.1,...,节点1.1.5,节点1.2,...时应该发生的情况。 ,节点1.6,节点2,节点2.1和节点2.2,我很乐意提供帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从双向链表中删除第一个和最后一个节点?

来自分类Dev

如何删除节点数组的最后一个节点?

来自分类Dev

列出链接的最后一个节点是第一个

来自分类Dev

仅返回第一个公共节点

来自分类Dev

GetElementsByTagName仅获取第一个节点(XMLDocument)

来自分类Dev

从链表C#中删除最后一个节点

来自分类Dev

从单链列表中删除最后一个节点

来自分类Dev

如何删除(最小)堆中的最后一个节点?

来自分类Dev

用jQuery仅选择第一个ul中的最后一个li

来自分类Dev

JAVA XML删除节点-仅删除第一个外观

来自分类Dev

无法从链表中删除除第一个节点以外的节点

来自分类Dev

检查最后一个(或第一个)节点的子节点是否具有特定值

来自分类Dev

在末尾的双向链表添加节点仅在printf上显示第一个和最后一个节点

来自分类Dev

选择最后一个XML节点

来自分类Dev

选择最后一个XML节点

来自分类Dev

在角树中创建第一个节点

来自分类Dev

在角树中创建第一个节点

来自分类Dev

XPath-仅第二个级别元素的第一个元素

来自分类Dev

仅当xpath中存在默认名称空间时,才能够选择第一个节点

来自分类Dev

xslt中第一个子节点之前和最后一个子节点之后的字符

来自分类Dev

删除链接列表的最后一个节点

来自分类Dev

单链列表删除最后一个节点

来自分类Dev

链接列表仅显示打印中的第一个节点元素

来自分类Dev

Unity LoadLevel不释放最后一个级别

来自分类Dev

如何在硒中的一个Web元素中返回相同级别节点的组合?

来自分类Dev

D3强制布局:分别定位第一个和最后一个节点

来自分类Dev

Select-Xml仅显示第一个节点中的子节点

来自分类Dev

XPath谓词仅使用节点集中的第一个节点进行匹配

来自分类Dev

Powershell在一个选择对象中获取不同级别的节点值

Related 相关文章

  1. 1

    如何从双向链表中删除第一个和最后一个节点?

  2. 2

    如何删除节点数组的最后一个节点?

  3. 3

    列出链接的最后一个节点是第一个

  4. 4

    仅返回第一个公共节点

  5. 5

    GetElementsByTagName仅获取第一个节点(XMLDocument)

  6. 6

    从链表C#中删除最后一个节点

  7. 7

    从单链列表中删除最后一个节点

  8. 8

    如何删除(最小)堆中的最后一个节点?

  9. 9

    用jQuery仅选择第一个ul中的最后一个li

  10. 10

    JAVA XML删除节点-仅删除第一个外观

  11. 11

    无法从链表中删除除第一个节点以外的节点

  12. 12

    检查最后一个(或第一个)节点的子节点是否具有特定值

  13. 13

    在末尾的双向链表添加节点仅在printf上显示第一个和最后一个节点

  14. 14

    选择最后一个XML节点

  15. 15

    选择最后一个XML节点

  16. 16

    在角树中创建第一个节点

  17. 17

    在角树中创建第一个节点

  18. 18

    XPath-仅第二个级别元素的第一个元素

  19. 19

    仅当xpath中存在默认名称空间时,才能够选择第一个节点

  20. 20

    xslt中第一个子节点之前和最后一个子节点之后的字符

  21. 21

    删除链接列表的最后一个节点

  22. 22

    单链列表删除最后一个节点

  23. 23

    链接列表仅显示打印中的第一个节点元素

  24. 24

    Unity LoadLevel不释放最后一个级别

  25. 25

    如何在硒中的一个Web元素中返回相同级别节点的组合?

  26. 26

    D3强制布局:分别定位第一个和最后一个节点

  27. 27

    Select-Xml仅显示第一个节点中的子节点

  28. 28

    XPath谓词仅使用节点集中的第一个节点进行匹配

  29. 29

    Powershell在一个选择对象中获取不同级别的节点值

热门标签

归档