【发布时间】:2011-06-14 10:24:19
【问题描述】:
我的页面中有很多复选框,并且有一个选中所有复选框的全选复选框。不知何故,我想模拟复选框的单击事件,即使它是通过全选按钮选中/取消选中的。我该怎么做?
【问题讨论】:
标签: javascript jquery checkbox dom-events
我的页面中有很多复选框,并且有一个选中所有复选框的全选复选框。不知何故,我想模拟复选框的单击事件,即使它是通过全选按钮选中/取消选中的。我该怎么做?
【问题讨论】:
标签: javascript jquery checkbox dom-events
【讨论】:
$('#foo').click(),它实际上做了同样的事情。
trigger('click') 切换当前值。如果您只想设置它然后将checked 设置为 true 然后调用 triggerHandler(...) stackoverflow.com/questions/10268222/…
获取检查状态
var checked = $("#selectall").is(":checked");
然后进行设置
$("input:checkbox").attr("checked",checked);
【讨论】:
attr 尝试过这个,因为我现在使用prop,但是这个方法只选中了这些框,它不会触发每个之后的点击事件
你也可以使用.change()函数
例如:
$('form input[type=checkbox]').change(function() { console.log('hello') });
【讨论】:
你也可以用这个,希望你可以为他们服务。
$(function(){
$('#elements input[type="checkbox"]').prop("checked", true).trigger("change");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div id="elements">
<input type="checkbox" id="item-1" value="1"> Item 1 <br />
<input type="checkbox" id="item-2" value="2" disabled> Item 2 <br />
<input type="checkbox" id="item-3" value="3" disabled> Item 3 <br />
<input type="checkbox" id="item-4" value="4" disabled> Item 4 <br />
<input type="checkbox" id="item-5" value="5"> Item 5
</div>
【讨论】:
没有 gQuery
document.getElementById('your_box').onclick();
我在我的复选框上使用了某些类。
var x = document.getElementsByClassName("box_class");
var i;
for (i = 0; i < x.length; i++) {
if(x[i].checked) x[i].checked = false;
else x[i].checked = true;
x[i].onclick();
}
【讨论】:
来自 jQuery 的触发函数可能是您的答案。
jQuery docs says: 当相应的事件发生时,任何附加了 .on() 或其快捷方法的事件处理程序都会被触发。但是,可以使用 .trigger() 方法手动触发它们。对 .trigger() 的调用以与用户自然触发事件相同的顺序执行处理程序
因此最好的单行解决方案应该是:
$('.selector_class').trigger('click');
//or
$('#foo').click();
【讨论】:
$("#gst_show>input").change(function(){
var checked = $(this).is(":checked");
if($("#gst_show>input:checkbox").attr("checked",checked)){
alert('Checked Successfully');
}
});
【讨论】: