3

私の*.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メソッドを使用して、部分ビューを非同期でロードしています。

だから私の質問は、部分ビューのクリックイベントをどのように起動する必要がありますか?

4

2 に答える 2

20

HTMLは動的にページに読み込まれるため、DOMクエリにより多くのコンテキストを与える必要があります。

これを試して。

$(document).on('click', '#bntSave', function(){
  //do stuff
});
于 2013-03-15T16:17:22.133 に答える
0

ボタンを含むユーザーコントロールは動的に読み込まれるため("#btnSave").live("click"){...}、スクリプトをメインビューに保持しながら、jqueryのイベントを使用できます。これにより、将来DOMに追加されるコントロールを追跡できます。したがって、「live(..)」に指定されたセレクターに一致するコントロールが表示されるたびに、イベントは自動的に配線されます。

これがお役に立てば幸いです。

于 2013-03-20T19:22:07.883 に答える