首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >剑道菜单onSelect,如何确定最后一个孩子

剑道菜单onSelect,如何确定最后一个孩子
EN

Stack Overflow用户
提问于 2014-06-25 06:40:00
回答 3查看 1K关注 0票数 1

我正在使用Kendo UI menu小部件,并且只想在选择最后一个子菜单项时触发onSelect事件:

例如,假设我选择了下面的“业务组”菜单项。然后,我想要触发其他函数。但是,如果我点击"Report“,我什么也不想做。

这可能是一些简单的事情,比如检查最后一个孩子,但我仍然在努力弄清楚。

下面是带有"kendo-menu“小部件的HTML代码:

代码语言:javascript
复制
<div class="widget-content text-left text-info" style="float:left; border:none;">
    <div class="widget-content" text-left text-info style="float:left; border:none; width:100px;">
        <span>
            <ul kendo-menu style="display: inline-block"  k-orientation="vm.menuOrientation"
            k-rebind="vm.menuOrientation" k-on-select="vm.onSelect(kendoEvent)" k-closeOnClick="false">
                <li>
                Reports
                    <ul>
                        <li>VaR
                            <ul>
                                <li>Business Group</li>
                                <li>Stress Scenarios</li>
                                <li>IR Risk - PV10</li>
                            </ul>
                        </li>
                        <li>Ctrpty
                            <ul>
                                <li>
                                    <a href="../index.html#/dashboard">Industry</a>
                                </li>
                                <li>
                                    <a href="index.html#/dashboard?repttype='MTM'">MTM</a>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </span>
    </div>

在我的javascript控制器代码中,我连接了事件:

代码语言:javascript
复制
vm.onSelect = function (ev) {          
      changeReportType(ev);
    };

但是,每当我单击任何菜单项时,它都会触发。我只想在最底层的项目上做出反应。

EN

回答 3

Stack Overflow用户

发布于 2014-06-26 08:18:35

我认为您可以简单地搜索ul后代:

代码语言:javascript
复制
vm.onSelect = function (e) {          
    var isLeaf = $(e.item).find("ul").length === 0;

    if (isLeaf) changeReportType(ev);
};

(demo)

票数 1
EN

Stack Overflow用户

发布于 2014-07-03 07:20:12

我最终使用了.className.match(),它工作得很好:

代码语言:javascript
复制
function swapGrid(e) {                    
        if (!e.item.className.match("selectable")) {
            // we have not yet reached the last child (i.e. the one with the "selectable" class).
            return;
        }
        var reptType = e.item.firstChild.textContent;    
}
票数 0
EN

Stack Overflow用户

发布于 2014-06-25 20:37:47

我不知道你是如何生成你的标记的,但是你可以为那些可以点击的类添加类选择器。

JavaScript:

代码语言:javascript
复制
vm.onSelect = function (ev) {          
  var item = $(ev);
  if ( item.hasClass("selectable") ) {
      changeReportType(ev);
  } else {
      ev.preventDefault();
  }
};

标记:

代码语言:javascript
复制
<li class="selectable">Business Group</li>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24397506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档