我的问题类似于那个问题: 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代码。
答案 0 :(得分:1)
我遇到了同样的问题,看过这篇文章和相关的其他文章,但是并不满足于&#34; onclick&#34;解决方案:
最后我在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: