即使通过javascript代码检查,如何触发复选框点击事件?

Jis*_*A P 69 javascript checkbox jquery dom-events

我的页面中有很多复选框,并且有一个全选复选框,用于检查所有复选框.不知怎的,我想模仿复选框的点击事件,即使通过选择所有按钮选中/取消选中它也是如此.我该怎么做?

Mar*_*son 101

您可以使用jQuery .trigger()方法.见http://api.jquery.com/trigger/

例如:

$('#foo').trigger('click');
Run Code Online (Sandbox Code Playgroud)

  • 你也可以调用`$('#foo').click()`,它可以有效地做同样的事情. (12认同)
  • 出现`trigger('click')`切换当前值.如果你想设置它然后将`checked`设置为true然后调用triggerHandler(...)http://stackoverflow.com/questions/10268222/jquery-checking-a-checkbox-and-triggering-javascript-onclick-事件 (4认同)
  • 如何用纯JavaScript做到这一点? (2认同)
  • 当此类帖子需要使用第三方时,如何将其标记为正确?他没有要求 jQuery 解决方案。 (2认同)

Har*_*ish 13

获得检查状态

var checked = $("#selectall").is(":checked");
Run Code Online (Sandbox Code Playgroud)

然后进行设置

$("input:checkbox").attr("checked",checked);
Run Code Online (Sandbox Code Playgroud)

  • 我没有尝试使用`attr`,因为我现在使用`prop`,但是这种方法只检查框,它不会为每个事件触发click事件 (8认同)

Lea*_*ing 9

你也可以用这个,希望你能为他们服务。

$(function(){
  $('#elements input[type="checkbox"]').prop("checked", true).trigger("change");
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)


sil*_*eto 8

你也可以使用.change()功能

例如:

$('form input[type=checkbox]').change(function() { console.log('hello') });
Run Code Online (Sandbox Code Playgroud)


Har*_*nis 5

没有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();
   }
Run Code Online (Sandbox Code Playgroud)


小智 5

jQuery 的触发函数可能就是您的答案。

jQuery 文档说: 当相应的事件发生时,会触发任何附加 .on() 或其快捷方法之一的事件处理程序。但是,可以使用 .trigger() 方法手动触发它们。调用 .trigger() 会按照事件由用户自然触发的顺序执行处理程序

因此,最好的单行解决方案应该是:

$('.selector_class').trigger('click');

//or

$('#foo').click();
Run Code Online (Sandbox Code Playgroud)