我有一个角色表,其中包含具有访问权限的复选框。我需要在最右边的列上显示一个帮助按钮,该按钮显示使用JQuery Dialog的角色信息。由于某种原因,对话框仅每隔一次显示一次。
以下是我使用的代码:
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<%foreach (Role role in ViewData["Roles"] as List<Role>)
{ %>
<tr>
<td width="20%">
<%=role.RoleName %>
</td>
<td width="70%">
<%=Html.CheckBox(role.RoleName, Model.IsInRole(role.LoweredRoleName)) %>
</td>
<td width="10%">
<%if (!string.IsNullOrEmpty(role.Description))
{ %>
<%Html.RenderPartial("Help", new KeyValuePair<string, string>(role.RoleName, role.Description)); %>
<%} %>
</td>
</tr>
<%} %>
</table>
Help.aspx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<KeyValuePair<string, string>>" %>
<a href="#" onclick="$('#<%=Model.Key.Replace(" ", "") %>').dialog(); return false;">
<img border="0" src="../../Content/Images/help_icon.gif" alt="?"/>
</a>
<div id="<%=Model.Key.Replace(" ", "") %>" title="<%=Model.Key %>" style="display:none;">
<%=Model.Value %>
</div>
答案 0 :(得分:1)
调用$(foo).dialog()将初始化一个对话框实例,并默认自动打开该对话框。如果要重用对话框,最简单的方法是禁用“自动打开”选项:$(foo).dialog({autoOpen:false})并用$(foo).dialog('open')打开它)
http://docs.jquery.com/UI/Dialog#overview和 http://blog.nemikor.com/2009/04/08/basic-usage-of-the-jquery-ui-dialog/
但我建议改用http://plugins.learningjquery.com/cluetip/之类的东西。 ClueTip可以通过点击打开选项并保持关闭状态,因此您可以选择悬停和点击激活。通过AJAX获取内容也非常容易,因此您无需加载用户可能永远不会点击查看的信息页面。