0

私は予定でいっぱいのテーブルを持っています。すべての予定には 2 つのボタンがあります。イベントをキャンセルするための 1 つ、それを受け入れるための 1 つ。

appointmentIdボタンをクリックしたときに jQuery 関数を取得するのに苦労しています。これを行う方法のヒントを教えてください。はappointmentId非表示の入力フィールドとして表に表示されます。

// my html code
<tr>
  <td align="left">
     <input type="hidden" name="appointmentId" value="234">
     John Smith - 14.03.2013 at 9 o'clock
  </td>
  <td align="right">
    <input type="button" id="acceptEvent" class="acceptEvent" value="Accept">
    <input type="button" id="cancelEvent" class="cancelEvent" value="Cancel">
  </td>
</tr>

// my jQuery code
$("body").delegate('.acceptEvent', 'click', function() {  
    console.log('accept event clicked');

    // get the appointmentId here

});

$("body").delegate('.cancelEvent', 'click', function() {  
    console.log('cancel event clicked');

    // get the appointmentId here
});
4

4 に答える 4

1

親tr要素を取得するために最も近いものを使用してから、非表示フィールドを選択します。これが正解である理由は、クリックイベントのコンテキストを$(this)で取得するためです。次に、DOMツリーを上ってルートテーブルの行要素に移動し、名前で子を選択します。これにより、常に正しい行にいることが保証されます。

編集:あなたがすでに答えを選択したことは知っていますが、これはそれが正しく機能していないことを本当に気にしました。.find('input [name = "appointmentId"]')を使用することもできますが、.children()を使用して2回ウォークダウンする必要がありました。あなたはすでにあなたの答えを選択しましたが、これがあなたの助けになることを願っています。

$('.acceptEvent').click(function() {
    var myVal = $(this).closest('tr').children().children().val();
}); 

$('.cancelEvent').click(function() {
    var myVal = $(this).closest('tr').children().children().val();
}); 
于 2013-03-14T20:51:30.790 に答える
0

キーオフする他のIDまたはクラスがないと仮定すると、クリックしたボタンの親要素を参照して、jQueryのAttributeEqualsSelectorを使用できます。tr

$('.acceptEvent').click(function() {
    // get the appointmentId here
    var appointmentId = $(this).closest('tr').find('input[name="appointmentId"]').val();
});
于 2013-03-14T20:51:00.607 に答える
0

私はそのようにします:

$("body").on('.acceptEvent', 'click', function() {  

    var id = $('input[name="appointmentId"]').val();
    //Or search in the parent <tr> 
    var id = $(this).parent().find('input[name="appointmentId"]').val();

    console.log('accept event clicked');

    console.log('Id is ' + id);

});
于 2013-03-14T20:53:58.083 に答える
0

関数ではclick、クリックされたボタンにアクセスできるthisため、次のことができます。

$("body").on('click', '.cancelEvent', function() { 
     var input = $(this).closest('tr').find('input[name="appointmentId"]').val();
 });
于 2013-03-14T20:52:42.330 に答える