2013-05-22 83 views
0

我有jQuery的我在哪裏觸發單選按鈕點擊一個很奇怪的問題,觸發呼叫,但它並沒有完全燒,而不是被一個on點擊功能拍攝,然而,對jQuery trigger的類似調用是被捕獲。jQuery的不捕獲點擊事件後的HTML單選按鈕

在下面的jQuery中,我選擇了<div>並使用find來搜索合適的內容。

var prev_chosen_d_option = $('#d_options_table .d_option_row[data-option-id="' + d_option_for_jq + '"]'); 

// this works, and the on click is captured 
prev_chosen_d_option.find('.hover_target').trigger("click", true); 

// this selects the radio button, but DOES NOT fire the on click function seen below  
prev_chosen_d_option.find('#d_standard_use_b_as_s_no').trigger("click", true); 

這些都是我的單選按鈕:

<input type="radio" value="yes" id="d_standard_use_b_as_s_yes" name="d_standard_use_b_as_s"> 

<input type="radio" value="no" id="d_standard_use_b_as_s_no" name="d_standard_use_b_as_s"> 

$("#d_options_table .d_option_row .hover_target").on("click", function(e, isFirstLoad) { 
    // it comes in here fine! 
}); 

$('input[name=d_standard_use_b_as_s], input[name=d_next_day_use_b_as_s], #del_standard_use_b_as_s_no').on("click", function(e, isFirstLoad) { 
// it DOESN'T come in here 
}); 

我不能看到jQuery的是如何能夠選擇單選按鈕,併成功地檢查它,但on方法不把它撿起來作爲點擊......特別是當我在代碼中運行非常接近的非常類似的設置時。

我知道肯定單選按鈕是選擇中,我可以傾倒出來用console.log控制檯。有趣的是,當我傾倒了連接到它到控制檯的事件,我得到undefined從這個trigger後:

console.log(prev_chosen_d_option.find("#_standard_use_b_as_s_no").data('events')); 

(我使用jQuery 1.7.2和測試FF)。

回答

0

其原因不工作無非是我下面,我實際上觸發在代碼中單擊一下處理程序。

0

而不是

$('input[name=del_standard_use_b_as_s], input[name=del_next_day_use_b_as_s], #del_standard_use_b_as_s_no').on('click', function(e) { 
// 
    }); 

嘗試:

$(document).on('click', 'input[name=del_standard_use_b_as_s], input[name=del_next_day_use_b_as_s], #del_standard_use_b_as_s_no', function(e) { 
// 
}); 
+0

不,可悲的是這沒有效果。它捕獲正常的點擊(與原始代碼一樣),但它不捕獲「觸發器」單擊。你認爲這裏的語法會起作用嗎? – crmpicco

+0

和$(prev_chosen_d_option).find('#d_standard_use_b_as_s_no') 而不是prev_chosen_d_option.find('#d_standard_use_b_as_s_no') ? 而且是正常的,你有#d_standard_use_b_as_s_no而不是 #del_standard_use_b_as_s_no? – FLX

+0

@我在我的代碼FTFY中有一個錯字。 – crmpicco