【问题标题】:Jquery Multi level dropdown pluginJquery 多级下拉插件
【发布时间】:2015-12-01 08:07:30
【问题描述】:

我正在使用 Jquery 插件向用户显示分层列表。然后用户可以选择父母或孩子。我做了一个小提琴,你可以在这里看到http://jsfiddle.net/wujz8jqj/

问题是我可以选择孩子但不能选择父母。所以如果一个元素有孩子,我只能选择孩子。换句话说,如果我们在树上下文中交谈,我只能选择叶子项。

我使用的插件就是这个,http://www.jqueryscript.net/menu/Animated-Multi-level-jQuery-Dropdown-Plugin.html

小提琴中的结构是这样的

item 1
item 2
   item 2.1
   item 2.2
...

所以这里的问题是我无法选择第 2 项。有什么想法吗?我正在考虑添加一个图标,因此如果用户选择该图标,该项目就会被选中。

【问题讨论】:

  • 尝试使用其他插件。
  • @ZakariaAcharki 你有什么想法吗?
  • 剑道用户界面,试试这个jsfiddle.net/kishoresahas/qx919w6o
  • @KishoreSahas 我之前尝试过剑道,但它给了我一个错误。但是让我再试一次,然后回复你。如果它有效,它似乎很完美。
  • 如果父级本身是一个链接,那么它不会阻止子级菜单,只需打开添加在其href中的链接。因此,您可以在其父项中添加相同的项作为子项

标签: jquery jquery-plugins


【解决方案1】:

我建议kendo ui 看下面的sn-p。

var dropdown = $("#dropdown").kendoDropDownList({
    dataSource: [{
        text: "",
        value: ""
    }],
    dataTextField: "text",
    dataValueField: "value",
    open: function (e) {
        // If the treeview is not visible, then make it visible.
        if (!$treeviewRootElem.hasClass("k-custom-visible")) {
            $treeviewRootElem.slideToggle('fast', function () {
                dropdown.close();
                $treeviewRootElem.addClass("k-custom-visible");
            });
        }
    }
}).data("kendoDropDownList");
var $dropdownRootElem = $(dropdown.element).closest("span.k-dropdown");

var treeview = $("#treeview").kendoTreeView({
    select: function (e) {
        // When a node is selected, display the text for the node in the dropdown and hide the treeview.
        $dropdownRootElem.find("span.k-input").text($(e.node).children("div").text());
        $treeviewRootElem.slideToggle('fast', function () {
            $treeviewRootElem.removeClass("k-custom-visible");
        });
    }
}).data("kendoTreeView");
var $treeviewRootElem = $(treeview.element).closest("div.k-treeview");

// Hide the treeview.
$treeviewRootElem.width($dropdownRootElem.width())
    .css({
    "border": "1px solid grey",
        "display": "none",
        "position": "absolute"
});

// Position the treeview so that it is below the dropdown.
$treeviewRootElem.css({
    "top": $dropdownRootElem.position().top + $dropdownRootElem.height(),
        "left": $dropdownRootElem.position().left
});

$(document).click(function (e) {
    // Ignore clicks on the treetriew.
    if ($(e.target).closest("div.k-treeview").length == 0) {
        // If visible, then close the treeview.
        if ($treeviewRootElem.hasClass("k-custom-visible")) {
            $treeviewRootElem.slideToggle('fast', function () {
                $treeviewRootElem.removeClass("k-custom-visible");
            });
        }
    }
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.kendostatic.com/2014.2.716/styles/kendo.common.min.css">
<link rel="stylesheet" type="text/css" href="//cdn.kendostatic.com/2014.2.716/styles/kendo.default.min.css">
<script type="text/javascript" src="//cdn.kendostatic.com/2014.2.716/js/kendo.all.min.js"></script>
<ul id="treeview">
  <li data-expanded="true">Item 1
    <ul>
      <li>Item 1.1</li>
      <li>Item 1.2</li>
    </ul>
  </li>
  <li data-expanded="true">Item 2
    <ul>
      <li>Item 2.1</li>
      <li>Item 2.2</li>
    </ul>
  </li>
</ul>
<input id="dropdown"></input>

演示:http://jsfiddle.net/kishoresahas/qx919w6o

【讨论】:

  • 我也在使用 Chrome。但我没有看到列表被填充。
  • 只是为了澄清一下,小提琴(原样)是否在您身边工作。
  • 所以当你在你的项目中实施时它不起作用,对吧?你能从你的项目(在小提琴中)制作代码 sn-p 以及错误吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 2012-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多