部分视图点击事件不会激发

时间:2013-03-15 16:06:15

标签: jquery asp.net-mvc-2 jquery-load

我的* .aspx页面(主页):

function getEmployeeHours(employeeId,year,month) {
 $('#clocked-details').load('/Employees/GetEmployeeClockedHours/',{ 'employeeId': employeeId,'year': year,'month': month });
    };

我的部分视图* .ascx:

 <td>
   <button id="btnSave" type="button" class="actionButton">
     Save</button>
  </td>

如上面的代码片段,我需要从主视图中获取部分视图 btnSave 来触发点击事件。

我在主视图中写了下面的代码。

$('#btnSave').off('click').on('click', function () {

         var yearValue = $("#year").val();
         var monthValue = $("#month").val();

         $.ajax({
             url: "/Employees/UpdateEmployeeClockedHoursByProvider",
             type: 'POST',
             cache: false,
             data: { employeeId: employeeId, year: yearValue, month: monthValue },
             success: function (result) {

             },
             error: function (xhr, ajaxOptions, thrownError) {
                 alert(xhr.status);
                 alert(thrownError);
             }
         });

         return false;
     });

但它没有触发。我正在使用加载 jquery方法异步加载我的局部视图。

所以我的问题是如何触发局部视图的点击事件?

2 个答案:

答案 0 :(得分:9)

由于您的html动态加载到页面中,因此您必须为DOM查询提供更多上下文。

试试这个。

$(document).on('click', '#bntSave', function(){
  //do stuff
});

答案 1 :(得分:1)

由于包含按钮的用户控件是动态加载的,因此您可以使用("#btnSave").live("click"){...} jquery事件,同时将脚本保留在主视图中,这可以跟踪将来添加到DOM的控件。因此,只要出现与“live(..)”的指定选择器匹配的控件,该事件就会自动换行。

希望这对你有所帮助。