Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery单击标签+复选框检测哪个?_Jquery - Fatal编程技术网

jquery单击标签+复选框检测哪个?

jquery单击标签+复选框检测哪个?,jquery,Jquery,我正在尝试检查event.target.nodeName,如下所示: $("input").click(function(e){ if(e.target.nodeName == "LABEL") { alert('label click'); e.preventDefault(); } else { alert($(this).attr('checked') ? 'checked': 'unchecked'); } }); 但

我正在尝试检查event.target.nodeName,如下所示:

$("input").click(function(e){
    if(e.target.nodeName == "LABEL") {
       alert('label click');
        e.preventDefault();
    } else {
       alert($(this).attr('checked') ? 'checked': 'unchecked');
    }
});
但名字永远不等于标签?我做错了什么

Quick

您应该选择labelparent元素。当前,单击处理程序的唯一目标是输入元素:

$("label").click(function(e){
  // ...
})

您根本没有选择标签。请先选择标签,然后重试:

你在这里碰到了错误的元素

$('label').on('click', function(e) {
    // Your logic here

});
而不是点击输入


确保使用.on.委派事件。

我认为这不起作用的原因是,只有在单击输入时才会运行:

  if(e.target.nodeName == "LABEL") {

在此场景中,节点名将始终等于为事件选择的元素。除非您首先选择标签,否则无法附加到标签。如果您想使用e.target,请始终绑定容器元素,基本上处理程序是在事件一直冒泡到子元素时执行的。吹毛求疵:您的示例使用on,但它不是委托。我甚至不确定我是否正确,因为您的代码确实处理从输入冒泡而来的单击,但通常当我看到术语委托时,它指的是当您以子代节点为目标,但处理程序像$label中那样附加到父代的情况。单击时,'输入',函数。。。,这并不能解决这里的OP问题。所以,忘了我说的吧,我不确定这从技术上讲是否是授权。@bfavaretto。。我想我在这里用错了。。看来你是对的: