Dijit.MenuItem和<a href=""></a>链接

时间:2013-04-09 11:05:03

标签: xpages dojo menuitem

我的问题类似于那个问题: 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>

但是链接无效,因为它在_onClick()中被dojo.stopEvent阻止。

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

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

P.S。最初这是XPages代码。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,看过这篇文章和相关的其他文章,但是并不满足于&#34; onclick&#34;解决方案:

  • 使用键盘导航它(对我来说)没用(
  • 它在声明区域中强制添加一个脚本元素(onclick = ...),这不是我对不引人注目的JavaScript的期望

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

<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时链接可以与鼠标和键盘导航配合使用。只是不要忘记&#34; class =&#39; claro&#39;&#34;&#34;在身体元素....

答案 1 :(得分: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/