2012-01-04 81 views
1

我有一個包含單選按鈕的表。我希望用戶能夠點擊表格,這將點擊內部的單選按鈕。然後,我將檢查的單選按鈕的值發送到服務器以獲取一些更新。在觸發事件處理程序之前執行點擊操作

當直接單擊單選按鈕時,它的工作原理很簡單,並且標記的單選按鈕的值是正確的。

但是,如果我只是在單選按鈕上使用.click();,事件處理程序似乎在發生實際的單擊事件之前觸發,並且在使用$("input:radio:checked").val()時我會得到以前的值。

我已經通過在單選按鈕的單擊處理程序中設置了100毫秒的超時時間來「解決」此問題,但它似乎是錯誤的。

有沒有什麼辦法來執行實際的點擊之前處理它?

謝謝。

回答

3

你是如何綁定click事件的?

另外,你可能想要的是.change()事件。這隻能在價值改變後才能被解僱。

$("input:radio").change(function() { 
    alert($(this).is(':checked')); 
}); 
+0

'alert(this.checked)'就足夠了,不需要jquery-fy來獲取這個值。 – 2012-01-04 09:30:04

+0

謝謝,工作過很有魅力。 – 2012-01-04 09:35:16

+0

我剛剛注意到:可能是換成另一個單選按鈕會觸發2個更改事件:取消選中一個,然後檢查另一個。只需在代碼周圍放置一個「if($(this).is(':checked'))」塊,它將始終只執行一次。 – Flater 2012-01-04 09:39:50

1

使用.change()事件而不是click()。即:

$("input:radio:checked").change(function() { 
    if ($(this).is(':checked')) { 
     console.log('Checked ' + $(this).val().toString()); 
    } 
}); 
+0

這隻會將事件綁定到當前選中的單選按鈕。 – Flater 2012-01-04 09:26:39

+0

另外,'if(this.checked)...'是足夠的,不需要查詢這個檢查。 – 2012-01-04 09:34:21

相關問題