【问题标题】:jQuery trigger not working as hopedjQuery 触发器无法按预期工作
【发布时间】:2012-05-19 00:19:58
【问题描述】:

我有这个

$('input[type=radio][name="voucher_type"]').live('change', function() {
//stuff here
});

因此,当单击单选按钮时,事情就会发生。单选按钮位于 div 中,该 div 样式为带有背景图像等的大按钮。

问题是,用户会点击图片,并期望它点击按钮。我不能使用标签,我知道它会检查收音机,所以我尝试了以下代码:

    $('div.voucher_box').click(function(){
    $(this).children('input').attr("checked", "checked");
    $(this).closest("input").trigger('click');
});

我希望当单击 div 类凭证_box 时,它会触发单选按钮上的单击/更改事件并触发所有在单选按钮更改时运行的代码。

谁能看出有什么问题?谢谢。

【问题讨论】:

  • 触发 change 事件会不会更好,因为这是绑定的?
  • 你能发个链接或者把你的代码放到jsfiddle里吗?

标签: javascript jquery html css


【解决方案1】:

如果你绑定了change事件,那么你必须触发change事件而不是click

$('div.voucher_box').click(function() {
    $(this).children(":radio").prop("checked", true).trigger("change");
}

请注意,从 jQuery 版本 1.7 开始,.live() 方法已被弃用。您应该使用.on() 附加事件处理程序。

【讨论】:

  • 嗨,它看起来不错,但我收到一条错误消息,说“prop()”不是一种方法。我们使用的是相当旧的 jquery。 1.4.4。是这个原因吗?
  • 然后改用attr("checked", "checked")
  • 我知道!谢谢。很好的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 2013-01-29
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 2011-03-11
相关资源
最近更新 更多