JQuery - 需要在任何锚链接上显示模态对话框,点击页面

时间:2011-10-07 11:22:02

标签: jquery asp.net-mvc-3 jquery-ui

在我的剃刀视图中,我有桌子和锚。其中一个单元格如下所示:

@foreach (MillitarySlot slot in item.SundaySlots)
                { 
                    <a style="color:@slot.Color" title="@slot.ToolTip" href="@slot.HRef">@slot.SlotText</a><br />
                }

如果用户点击任何一个锚点,那么我需要显示模态对话框。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

所以,如果你做了这样的事情:

$('a').click(function(e) {
   alert('anchor clicked');
}); 

您可以获得点击页面上每个锚点的警报 - 不太可能是您想要的。如果您为这些锚分配了一个类,那么您可以这样做:

$('a.myclass').click(function(e) {
   alert('anchor clicked');
}); 

然后你就会得到那个类的锚点的警报。对于模态对话框部分,您可以替换我收到警报的位置,实际上在页面上创建一个隐藏的div用作模式对话框。我做了类似这样的事情,看起来像是:

$('a.myclass).click(function () {
   // add the div or reuse it
   var modaldialog = ($('#ModalDialog').length > 0)
     ? $('#ModalDialog')
     : $('<div id="ModalDialog" style="display:hidden"></div>').appendTo('body');
   load up data via ajax call
   $.get('@Url.Action("MyAction", "MyController")', {},
      function (responseText, textStatus, XMLHttpRequest) {
         modaldialog.html(responseText);
         modaldialog.dialog({
            modal: true,
            width: 500,
            title: 'My Modal Dialog',
         });
      }
   );
});

无论如何,这是一个开始。您也可以在对话框中添加按钮,并根据您的特定需求进行操作。

答案 1 :(得分:0)

您可以为该锚点提供一个id(用于jQuery性能)并绑定一个click事件,该事件通过Ajax获取模式对话框,然后返回false(如果用户禁用了JavaScript,则应继续执行该对话框)