我有一个动态生成的菜单(C#),如下所示:
MenuItem(string text, string value, string imageUrl, string navigateUrl, string target)
MenuItem AdminLevel1 = new MenuItem("Admin", "Admin");
MenuItem AdminPedidosRegisto = new MenuItem("Questions", "AdminQ");
NavigationMenu.Items.Add(new MenuItem("Messages Received", "AdminMessagesR", "", "./Admin/Messages.ascx", "ContainerIframe"));
AdminPedidosRegisto.ChildItems.Add(new MenuItem("Pending", "AdminPending", "", "./Admin/Pedidos.ascx", "ContainerIframe"));`
ContainerIframe
是iframe的ID,NavigationMenu
是(asp:Menu)的ID。
我想在点击MenuItem时设置一些JavaScript来执行。
有办法吗?
答案 0 :(得分:1)
尝试将以下代码放在.aspx页面的head标记内:
<script type="text/javascript"> window.onload = function(){
var menuTable = document.getElementById("<%=Menu1.ClientID%>"); //specify your menu id instead of Menu1 var menuLinks = menuTable.getElementsByTagName("a");
for(i=0;i<menuLinks.length;i++)
{
menuLinks[i].onclick = function(){return confirm("u sure to postback?");}
}
setOnClickForNextLevelMenuItems(menuTable.nextSibling); } function setOnClickForNextLevelMenuItems(currentMenuItemsContainer){
var id = currentMenuItemsContainer.id;
var len = id.length;
if(id != null && typeof(id) != "undefined" && id.substring(0,4) == "Menu" && id.substring(parseInt(len)-5,parseInt(len)) == "Items")
{
var subMenuLinks = currentMenuItemsContainer.getElementsByTagName("a");
for(i=0;i<subMenuLinks.length;i++)
{
subMenuLinks[i].onclick = function(){return confirm("u sure to postback?");}
}
setOnClickForNextLevelMenuItems(currentMenuItemsContainer.nextSibling);
} } </script>
请注意,您无需在代码隐藏文件中编写任何代码即可使此解决方案正常工作。我已经在IE7&amp;中测试了代码FF2.0
希望它适合你。
欢呼声!!
答案 1 :(得分:0)
AdminLevel1.NavigateUrl =“javascript:callSomeFunction();”;
答案 2 :(得分:0)
感谢@Manibhadra(这对父项和子项来说已经足够了)
window.onload = function ()
{
var menuTable = document.getElementById("<%=NavigationMenu.ClientID%>");
var menuLinks = menuTable.getElementsByTagName("a");
for (i = 0; i < menuLinks.length; i++)
{
menuLinks[i].onclick = function () { setInnerHTML('ContainerTittle', this.innerHTML); }
}
}
答案 3 :(得分:0)
哈恩斯的回答似乎使所有项目都一样。
我使用以下内容:
Page.ClientScript.RegisterStartupScript(typeof(Page), "123", string.Format("$('#MenuDiv').find('a').filter(':contains(\"{0}\")').css('cursor', 'pointer').click(function(){{ {1} }});", Title, Script), true);
其中:
“123”是脚本的唯一键
MenuDiv是您的菜单客户端ID
标题是您分配给菜单项的文本
脚本是您要运行的JavaScript。