如何在jQuery模式对话框中获取局部视图按钮的事件

时间:2011-07-13 11:26:08

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

我有一个名为xyz的局部视图,我有很多按钮,它实现了不同的功能。

 $('#dialog').dialog({
        autoOpen: false,
        width: 700,
        resizable: false,
        modal: true,
        open: function (event, ui) { $(this).load('<%=Url.Action("PushButton","Body",new {Parm="text",Parm1="Value"}) %>'); },
        position: 'top' 
    });

我在jQuery模式对话框中打开了这个局部视图XYZ。我在partialview XYZ中有一些按钮。我没有明白如何解雇事件。就像我想通过单击在Partialview中创建的按钮来关闭对话框一样。

3 个答案:

答案 0 :(得分:1)

加载完成后,您需要连接按钮事件。您可以向加载项添加回调以通知您:http://api.jquery.com/load/

答案 1 :(得分:0)

我遇到了同样的问题。我希望我的部分视图是独立的,并使用Ajax提交。它与创建用户控件类似。

我现在正计划使用发布者/订阅者机制从我的部分视图中收听事件。父级可以侦听此事件并关闭对话框。

我遇到了Ben Alman's Pub/Sub gist

JavaScript中观察者模式的另一篇好文章是 Learning JavaScript Design Patterns, The Observer Pattern

答案 2 :(得分:0)

以下是load事件回调的代码:

 $('#dialog').dialog({
        autoOpen: false,
        width: 700,
        resizable: false,
        modal: true,
     open: function (event, ui) { $(this).load('<%=Url.Action("PushButton","Body",new {Parm="text",Parm1="Value"}) %>', function(){
         $("#buttonId").click(function(){
             //Stuff you want to do with the button here
         });
     }); },
        position: 'top' 
    });

您也可以在document.ready中执行此操作:

$(document).on('click', '#idOfControlInsideDialog', function() {
      //Stuff you want to do here
});