我有一个复选框,我将其标记为已选中,但它不会触发更改功能。这张纸条没有出现。
My code:
$('#checkbox1').prop("checked", true);
$('#checkbox1').change(function(){
if ($(this).is(':checked'))
$('#s-note').show();
else
$('#s-note').hide();
});
答案 0 :(得分:2)
如果您要将注释设置为默认隐藏并使用基于id
的选择器执行此操作,请执行以下操作:
#s-note { display:none; }
然后您的代码无法展示它,因为它还使用基于id
的选择器,并且不会比已经生效的选择器更具体。
相反,您必须使用一个选择器将该注释默认为隐藏,该选择器的特定性不如您稍后用于显示/隐藏它的id
选择器。那将是一堂课。
此外,在触发事件之前设置事件处理程序 至关重要,以便在事件发生时,已经注册了事件处理程序。
现在,根据您的需求,您并不需要change
事件,click
会做得很好。最后,为确保您正确触发事件,请使用JQuery的.trigger()
方法设置动态。
// Make sure you set up the callback first
$('#checkbox1').on("click", function(){
if ($(this).is(":checked"))
$('#s-note').show();
else
$('#s-note').hide();
});
// Then just trigger the event
$('#checkbox1').trigger("click");

.hide { display:none; }

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1">Test
<div id="s-note" class="hide">Special</div>
&#13;
答案 1 :(得分:2)
您是否希望在没有用户互动的情况下启动onchange?
你的问题是你在设置处理程序之前设置了检查状态,所以如果这会触发更改,你就不会抓住它。这里真正的问题是使用JavaScript设置属性不会触发更改事件。因此,您需要手动触发更改事件。
$('#checkbox1')
.prop("checked", true) // set it to checked
.on("change", function() { // bind change event
$('#s-note').toggle($(this).is(':checked')); // toggle visibility
}).trigger("change"); //trigger that you need the change to run
答案 2 :(得分:0)
我希望此代码段可以帮助您
Approach 1
$('#idcheckbox').on('change', function() {
if($(this).is(':checked')) {
alert('checked');
} else {
alert('default ');
}
});
Approach 2
$('input[type=checkbox]').on('change', function() {
if($(this).is(':checked')) {
alert('checked');
} else {
alert('default ');
}
});
答案 3 :(得分:0)
我在.net mvc中运行了你的代码,运行正常。
这是隐藏或显示div元素的复选框ID。
<input type="checkbox" id="checkbox1" value=" " />
<div id="s-note" style="display: none">
<label>Showing</label>
</div>
你想要展示什么?