部分视图点击事件未触发

4

我的*.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;
     });

但是它没有触发。在这里,我使用load jquery方法异步加载我的局部视图。

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


按钮点击事件在局部视图中还是主视图中? - Siva Gopal
@SivaGopal 我已经在两个地方都放置了那个事件。但是没有成功,你有什么想法吗? - Sampath
在将脚本放置在主视图中时,您尝试过使用 jQuery 的 ("#btnSave").live("click") 事件吗? - Siva Gopal
1
@SivaGopal 谢谢。对于实时方法它是有效的。如果您能将其作为答案发布,那我就可以接受它了。 - Sampath
感谢更新,我已将其作为答案提供。 - Siva Gopal
2个回答

21

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

请尝试这个。

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

0
由于包含按钮的用户控件是动态加载的,您可以在主视图中保持脚本的同时使用 jQuery 的 ("#btnSave").live("click"){...} 事件,以便跟踪将来添加到 DOM 中的控件。因此,每当出现与“live(..)”指定选择器匹配的控件时,事件就会自动连接。希望这可以帮助您。

我尝试了这个,得到了“TypeError: $(...).live is not a function”的错误。也许.live不再被支持了? - thestruggleisreal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接