我正在验证某些数据,然后我正在动态检查复选框,并且我想触发复选框的更改事件。
$("#chk").prop("checked", true).trigger("change");
更改事件
$("#chk").change(function () {
if ($(this).is(':checked')) {
if (localStorage.getItem('A') == undefined && sessionStorage.getItem('A') == null) {
location.href = "/" + lang.split('-')[0] + "/login.aspx";
}
$("#dvClass").hide();
$("#dvPromoCode").hide();
$("#resultby").empty();
$("#resultby").append('<option selected value="Flex">' + Res.flexidates + '</option>');
}
else {
$("#dvClass").show();
$("#dvPromoCode").show();
$("#resultby").empty();
$("#resultby").append('<option value="AirAvailability">' + Res.schedule + '</option>');
$("#resultby").append('<option selected value="Flex">' + Res.flexidates + '</option>');
}
});
但它不会触发更改事件。但是如果我从控制台执行,它会按预期工作。我想知道有什么问题。
函数的顺序在这里很重要。
您已经在设置复选框值之前放置了更改事件。看看下面的代码。
$("#chk").prop("checked", "checked").trigger("change");
$("#chk").change(function() {
alert("triggered!");
});
以上将不起作用,因为当 jquery 为第一行运行时,复选框没有任何更改事件。您可以在此Fiddle 中检查相同的内容
现在在调用它之前放置您的更改事件函数,如下所示。
$("#chk").change(function() {
alert("triggered!");
});
$("#chk").prop("checked", "checked").trigger("change");
现在您可以得到预期的结果。您可以在此Fiddle 中检查相同的内容
总是更好地将on
事件用于动态添加的元素,如下所示。
$("#chk").on('change', function() {
alert("triggered!");
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句