为了账号安全,请及时绑定邮箱和手机立即绑定

如何停止复选框上的事件冒泡

如何停止复选框上的事件冒泡

ibeautiful 2019-10-06 15:11:33
我有一个复选框,我想对click事件执行一些Ajax操作,但是该复选框也位于容器中,它具有自己的单击行为,当单击该复选框时,我不想运行该行为。此示例说明了我要执行的操作:$(document).ready(function() {  $('#container').addClass('hidden');  $('#header').click(function() {    if ($('#container').hasClass('hidden')) {      $('#container').removeClass('hidden');    } else {      $('#container').addClass('hidden');    }  });  $('#header input[type=checkbox]').click(function(event) {    // Do something  });});#container.hidden #body {  display: none;}<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script><div id="container">  <div id="header">    <h1>Title</h1>    <input type="checkbox" name="test" />  </div>  <div id="body">    <p>Some content</p>  </div></div>但是,我不知道如何在不导致默认点击行为(复选框变为选中/取消选中)的情况下停止事件冒泡。以下两项都停止了事件冒泡,但也没有更改复选框状态:event.preventDefault();return false;
查看完整描述

4 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

更换


event.preventDefault();

return false;


event.stopPropagation();

event.stopPropagation()


停止将事件冒泡到父元素,从而防止任何父处理程序收到该事件的通知。


event.preventDefault()


阻止浏览器执行默认操作。使用isDefaultPrevented方法可以知道是否曾经(在该事件对象上)调用过此方法。


查看完整回答
反对 回复 2019-10-06
?
慕仙森

TA贡献1827条经验 获得超7个赞

使用stopPropagation方法:


event.stopPropagation();


查看完整回答
反对 回复 2019-10-06
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

别忘了IE:


if (event.stopPropagation) {    // standard

        event.stopPropagation();

    } else {    // IE6-8

        event.cancelBubble = true;

}


查看完整回答
反对 回复 2019-10-06
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

使用jQuery时,您无需单独调用stop函数。


您可以只返回false事件处理程序


这将停止事件并取消冒泡。


另请参阅event.preventDefault()与return false


从jQuery文档中:


因此,这些处理程序可能会通过调用event.stopPropagation()或return 阻止委托处理程序触发false。


查看完整回答
反对 回复 2019-10-06
  • 4 回答
  • 0 关注
  • 1020 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信