0

我的问题类似于那个: Dijit Menu (bar) with link

我正在使用 Dijit 菜单,如下所示:

<div data-dojo-type="dijit/Menu">
    <div id="menuItem" data-dojo-type="dijit/MenuItem">
        <a href="http://url.com">urlLink</a>
    </div>
</div>

但是链接不起作用,因为它dojo.stopEvent在 _onClick() 中被阻止。

问题是:
如何删除 dojo.stopEvent 并使里面的链接<div id="menuItem" data-dojo-type="dijit/MenuItem">正常工作?

问题:
我需要放入<div id=menuItem">一些代码,它必须接收 onClick 事件。

PS 原来这是 XPages 代码。

4

2 回答 2

1

好吧,我遇到了同样的问题,看到了这篇文章和相关的其他文章,但对“onclick”解决方案不满意:

  • 它对键盘导航不起作用(对我来说)
  • 它强加给声明区域中的添加脚本元素(onclick = ...),这不是我对不显眼的 JavaScript 所期望的

最后,我在 dojo 中进一步挖掘,并决定直接使用处理程序中第一个子节点的 href 属性。我的脚本部分(来自dijit 菜单教程)是:

<script>
    require([
        "dojo/dom",
    "dojo/parser",
    "dojo/dom-attr",
    "dojo/query",
        "dijit/registry",
        "dijit/WidgetSet", // for registry.byClass
        "dijit/Menu",
        "dijit/MenuItem", 
        "dijit/MenuBar",
        "dijit/MenuBarItem", 
        "dijit/PopupMenuBarItem",
        "dojo/domReady!"
    ], function(dom, parser, domattr, query, registry){
        // a menu item selection handler
        var onItemSelect = function(event){
            dom.byId("lastSelected").innerHTML = this.get("label");
            var achild = query("a", this.domNode)[0];
            if (achild != null) {
                var href = domattr.get(achild, "href");
                if ((href != null) && (href != '') && (href != '#')) {
                    window.location.href = href;
                }
            }
        };

        parser.parse();

        var setClickHandler = function(item){
            item.on("click", onItemSelect);
        };

        registry.byClass("dijit.MenuItem").forEach(setClickHandler);
        registry.byClass("dijit.MenuBarItem").forEach(setClickHandler);
    });
</script>

这样我就不必更改类型菜单中的任何内容

<ul><li><a href="...">...</a></li></ul>

在禁用 JavaScript 的情况下工作,并且在启用 JavaScript 时,链接可以在鼠标和键盘导航下正常工作。只是不要忘记body元素中的“class ='claro'”......

于 2014-04-17T12:25:02.380 回答
0

那这个呢:

<div data-dojo-type="dijit/Menu">
    <div id="menuItem" data-dojo-type="dijit/MenuItem" 
          onclick="window.location('http://url.com')">
        <a href="http://url.com">urlLink</a>
    </div>
</div>

工作jsfiddle:

http://jsfiddle.net/KuyYX/

于 2013-04-09T11:49:45.003 回答