【问题标题】:jQuery not capturing click event following trigger call on HTML radio buttonjQuery 在 HTML 单选按钮上触发调用后未捕获单击事件
【发布时间】:2013-06-19 21:41:36
【问题描述】:

我对 jQuery 有一个非常奇怪的问题,我触发了对单选按钮的点击,但它没有完全触发,也没有被 on 点击函数捕获,但是对 jQuery trigger 的类似调用 正在被捕获。

在下面的 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 将其转储到控制台。有趣的是,当我将附加到它的事件转储到控制台时,我从这个 after trigger 得到 undefined

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

(我正在使用 jQuery 1.7.2 并在 FF 中进行测试)。

【问题讨论】:

    标签: javascript jquery onclick radio-button eventtrigger


    【解决方案1】:

    代替

        $('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) {
     // 
    });
    

    【讨论】:

    • 不,遗憾的是这没有效果。它捕获正常点击(与原始代码一样),但不捕获trigger 点击。你觉得这里的语法会有影响吗?
    • 还有 $(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 是否正常?
    • 在第二个 on() 中,您忘记了 isFirstLoad 参数
    • 谢谢,但我故意忽略了它(因为它未使用)。我已经更新了我的问题以使其保持一致。对于我的生活,我看不出这段代码有什么问题。
    • 是的,这很奇怪。如果您尝试使用 click() 会怎样,就像在 jQuery 文档中一样? $("p").click( function (event, isFirstLoad) { } ); $("p").trigger("click", true);
    【解决方案2】:

    这不起作用的原因只是我在下面有点击处理程序,我实际上在代码中触发了点击。

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多