jquery input父元素设置点击选择事件,点击input无法选择

<span class="main_span"><input type="checkbox"/>避孕套</span>

image.png

为了实现点击span范围内都能勾选,同时不想用label,选择给span添加点击事件

$('.main_span').on('click',function(e){ // 全选功能
            let self = this
            if ($(self).find('input').is(':checked')) {
                $(self).find('input').prop('checked', false)
            } else{
                $(self).find('input').prop('checked', true)
            }
        })

问题是:
此时点击span中的文字(即避孕套三个字),可以实现选择和取消选择功能
image.png
但是点击input框的时候却没有反应了
把函数中的if代码注释掉,则input框正常了,怀疑是不是设置的效果与input本身的点击事件有所冲突,现在不知道该如何解决。

阅读 1.9k
2 个回答
const $input = $(this).find('input')
$input.prop('checked', ! $input.prop('checked'))
新手上路,请多包涵

处理了 很简单 为input再写一个点击事件:

$("body").on('click','.item input[type=checkbox]',function (e) {
          e.stopPropagation();//阻止事件冒泡
    });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题