Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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_Onclick - Fatal编程技术网

如何确定是否在Jquery中单击了子项

如何确定是否在Jquery中单击了子项,jquery,onclick,Jquery,Onclick,如果onclick事件绑定到父级,jQuery中是否有一种方法可以判断单击了哪个子级 例如: $('#daddy').click(function () { // if($("#son").isClicked()){return true;} //return false; }); 标记如下所示: <div id="daddy"> <span id="son"></span> <span id="daughter">

如果onclick事件绑定到父级,jQuery中是否有一种方法可以判断单击了哪个子级

例如:

  $('#daddy').click(function () {
    // if($("#son").isClicked()){return true;}
    //return false;
  });
标记如下所示:

<div id="daddy">
  <span id="son"></span>
  <span id="daughter"></span>
</div>

请尝试此选项以获得替代方案

$('#daddy span').click(function () {
    var clicked = $(this).attr('id');
    if(clicked == "son"){
        return true;
    }
    return false;
});

传递给
click
的事件处理程序将接收一个
事件
对象作为其第一个参数。事件的
目标
(即启动事件的元素)将在此处指定

以下是来自以下方面的示例:


span,strong,p{
填充:8px;显示:块;边框:1px实心#999;}

单击

$(“正文”)。单击(函数(事件){ $(“#log”).html(“单击:”+event.target.nodeName); });
您可以使用来确定单击的内容:

  $('#daddy').click(function (e) {
      alert(e.target.id); // The id of the clicked element
  });
这是一个。

看看这个


这至少应该是一个不同的视角:

$('#parent').on("click", function(evt) {
        evt.stopPropagation();
        if($.inArray(evt.currentTarget, $(this).children())){
            console.log(evt.currentTarget);
        }
});

使用
event.target
获取真正单击的节点:

$('#daddy span').on('click',function(event){
    if(event.target.nodeName=='BUTTON'){//Was clicked a button
        ....
    }
    if(event.target.id=='id'){//Was clicked #id
        ....
    }
    ...
});

我知道这是一个选择,但这不是我想要的。我希望保留原有代码。
event.target
将是
,如果这两个元素中的一个启动了弹出到您附加到
#daddy
的处理程序的单击事件。使用此属性可确定单击了哪个子级。瞧!我使用的是jQuery.live侦听器,只需要使用类名就可以停止向子级的传播。将上面的提示与我从另一个页面中得到的提示结合使用:
if(!$(e.target).hasClass(“customClass”))返回false并且它工作得很好。谢谢只是jQuery文档中的一条注释:“从jQuery 1.7开始,
.delegate()
已被
.on()
方法取代。”
$('#parent').on("click", function(evt) {
        evt.stopPropagation();
        if($.inArray(evt.currentTarget, $(this).children())){
            console.log(evt.currentTarget);
        }
});
$('#daddy span').on('click',function(event){
    if(event.target.nodeName=='BUTTON'){//Was clicked a button
        ....
    }
    if(event.target.id=='id'){//Was clicked #id
        ....
    }
    ...
});