我有两个复选框。检查第一个时,我强制要检查第二个。选中第二个时,我想切换一条消息。但是当检查第一个事件时,在第二个时间内未检测到更改事件:
$(document).ready(function(){
$("#first").change(function(){
if ($(this).is(":checked")){
$("#second").prop('checked', true).attr("disabled","disabled");
} else {
$("#second").prop('checked', false).removeAttr("disabled");
}
});
$("#second").change(function(){
if ($(this).is(":checked")){
$("#alert").show();
} else {
$("#alert").hide();
}
})
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="first" type="checkbox">first
<input id="second" type="checkbox">second
<br><br>
<div id="alert" style="display:none">This is an alert</div>
&#13;
答案 0 :(得分:1)
您的方法无法按预期工作,因为当您动态设置某些内容时,其事件不会像鼠标点击一样发送。
因此,您需要手动调度该事件。
在jQuery中,您可以使用.trigger()
。
$(document).ready(function(){
$("#first").change(function(){
if ($(this).is(":checked")){
$("#second").prop('checked', true).attr("disabled","disabled");
} else {
$("#second").prop('checked', false).removeAttr("disabled");
}
// ADDED THIS LINE
$('#second').trigger('change');
});
$("#second").change(function(){
if ($(this).is(":checked")){
$("#alert").show();
} else {
$("#alert").hide();
}
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="first" type="checkbox">first
<input id="second" type="checkbox">second
<br><br>
<div id="alert" style="display:none">This is an alert</div>
答案 1 :(得分:0)
对dom元素的逻辑更改不会生成事件。如果您希望事件在事件之后运行trigger('change')
以生成事件。