2013-03-14 48 views
0

我有一個滿是約會的表。每個約會都有兩個按鈕。一個取消事件,一個接受事件。單擊按鈕時獲取jQuery的字段

我很努力地在jQuery函數中獲得appointmentId,當我點擊一個按鈕。你能給我一個提示如何做到這一點? 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 
}); 
+0

什麼你使用的是jQuery版本嗎?從1.7開始.delegate()已被.on()取代。 – j08691 2013-03-14 20:50:31

回答

0

click功能,您可以訪問與單擊this的按鈕,這樣你可以做:

$("body").on('click', '.cancelEvent', function() { 
    var input = $(this).closest('tr').find('input[name="appointmentId"]').val(); 
}); 
0

假設你有沒有其他的ID或類鍵關機的,你可以使用jQuery的Attribute Equals Selector參考點擊的按鈕的父tr元素:

$('.acceptEvent').click(function() { 
    // get the appointmentId here 
    var appointmentId = $(this).closest('tr').find('input[name="appointmentId"]').val(); 
}); 
+1

這可能不是一個好的假設。最有可能的(因爲這是一個表),會有其他列同名 – 2013-03-14 20:52:08

+0

@DavidL同意,我更新我的答案是參考點擊按鈕。 – 2013-03-14 20:59:32

1

最接近使用搶父TR元素,然後選擇你的隱藏字段。 這是正確答案的原因是因爲它採用$(this)的點擊事件的上下文。然後它沿DOM樹行進到你的根錶行元素並按名稱選擇子元素。這確保您始終處於正確的行中。

編輯:我知道你已經選擇了一個答案,但這真的困擾着我,它不能正常工作。我不得不使用.children()兩次走下去,儘管你也可以使用.find('input [name =「appointmentId」]')。即使你已經選擇了你的答案,我希望這會對你有所幫助。

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

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

嗨大衛。感謝這個建議。我試過了,但myVal是'undefined'。任何想法? – doonot 2013-03-14 20:57:31

+1

@doonot我更新了我的答案。我已經測試過它,它工作正常。如果你仍然需要JSFiddle,請告訴我 – 2013-03-15 00:15:32

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); 

}); 
相關問題