我在加载所有页面内容后使用trigger()
检查单选按钮,因为单选按钮值来自第三方api。
我默认选中了一个选项。所以我使用trigger()
事件来检查单选按钮。单选按钮也有它的点击事件。
在我的代码中,只有单选按钮被选中但事件未触发。 我的代码是......
jQuery(document).ready(function($) {
jQuery("#btn_03").attr('checked', 'checked');
jQuery("#btn_03").trigger("change");
jQuery(".class input[type='radio']").live("change", function($) {
alert("clicked");
});
});
答案 0 :(得分:5)
您需要在触发事件之前分配事件处理程序。
当您实际触发事件时,您仍然没有为该事件附加任何侦听器。你是在下一行做的。因此事件change
确实被触发但事件没有发生。
你可以这样做
jQuery(document).ready(function($) {
jQuery("#btn_03").attr('checked', 'checked');
jQuery(".class input[type='radio']").on("change", function($) {
alert("clicked");
});
jQuery("#btn_03").trigger("change");
});
根据最新的jQuery文档
,也可以使用“on”绑定事件而不是“live”答案 1 :(得分:3)
您需要在附加事件处理程序后触发事件:
jQuery(".class input[type='radio']").on("change", function(e) {
alert("clicked");
});
jQuery("#btn_03").prop('checked', true).trigger("change");
同时使用$.fn.on
而不是很久以前弃用$.fn.live
。最好设置checked
属性而不是属性。
答案 2 :(得分:2)
您需要在实际调用change事件之前挂钩change事件。我已经包含了您要求的功能的小提琴。
我已经将更改事件目标更改为实际的无线电输入,因为我没有你的html,但通常你很可能想要使用无线电组的名称来挂钩事件,因为这些通常与单一行为相结合 - 如$("input[name='radioName']").change(function(){ // Change event code });
旁注:您可以使用' $'而不是' jQuery'开始表达。
$(document).ready(function() {
$("#btn_03").attr('checked', true); // Check radio button
// Hook change event on radio button
$("#btn_03").change(function() {
alert("clicked");
});
// Trigger change on radio button
$("#btn_03").trigger("change");
});