我正在验证某些数据,然后我动态检查复选框,我想触发复选框的更改事件。
$("#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>');
}
});
但它没有触发更改事件。但是,如果我从控制台执行而不是按预期工作。我想知道什么是问题。
答案 0 :(得分:1)
在你改变ins之前,你是否宣布改变事件;看到更新的答案:
$(function(){
$("#chk").on("change", function() {
console.log(this.checked)
});
$("#chk").prop("checked", true).trigger("change");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="chk" type="checkbox" />
&#13;
答案 1 :(得分:1)
这里的功能顺序很重要。
您在设置复选框值之前已经放置了更改事件。请看下面的代码。
$("#chk").change(function() {
alert("triggered!");
});
$("#chk").prop("checked", "checked").trigger("change");
以上操作无效,因为当jquery为第一行运行时,它没有任何复选框的更改事件。您可以在此Fiddle
中查看相同的内容现在在调用之前放置你的变更事件函数,如下所示。
on
现在您可以获得预期的结果。您可以在此Fiddle
中查看相同的内容最好将$("#chk").on('change', function() {
alert("triggered!");
});
事件用于动态添加的元素,如下所示。
string filePath = "~/Templates/Work/Template.docx";
using (MemoryStream stream = new MemoryStream())
{
SaveToStream(stream, FileFormat.Docx);
Document finalDoc = new Document();
finalDoc.LoadFromStream(stream, FileFormat.Docx);
stream.SetLength(0);
finalDoc.UpdateTableOfContents();
finalDoc.SaveToStream(stream, FileFormat.Docx);
return stream.ToArray();
}