如何为要捕获的javascript单击事件选择多个元素?

如何为要捕获的javascript单击事件选择多个元素?,javascript,jquery,html,Javascript,Jquery,Html,我有这个HTML: <div id="outsideContainer"> <ul> <li>Hello</li> <li>Goodbye</li> </ul> </div> 有什么想法吗?大体上说,没问题。它不起作用的可能原因: 您在“outsideContainer”元素存在之前执行JavaScript,例如: ... <script> $('#outsideContainer').

我有这个HTML:

<div id="outsideContainer">
<ul>
<li>Hello</li>
<li>Goodbye</li>
</ul>
</div>

有什么想法吗?

大体上说,没问题。它不起作用的可能原因:

  • 您在“outsideContainer”元素存在之前执行JavaScript,例如:

    ...
    <script>
    $('#outsideContainer').click(function() {
    //do stuff
    });
    </script>
    <div id="outsideContainer">
    <ul>
    <li>Hello</li>
    <li>Goodbye</li>
    </ul>
    </div>
    
    请注意,如果在
    ul
    中单击,而不是在
    li
    上单击,则根据边距和填充,
    event.target
    可能是
    ul
    元素

  • 其他值得一看的东西:

    • -钩住容器上的事件,但让jQuery根据所单击的子对象筛选得到的事件
    • -基本上是文档范围的
      代表

    在大多数情况下,这很好。它不起作用的可能原因:

  • 您在“outsideContainer”元素存在之前执行JavaScript,例如:

    ...
    <script>
    $('#outsideContainer').click(function() {
    //do stuff
    });
    </script>
    <div id="outsideContainer">
    <ul>
    <li>Hello</li>
    <li>Goodbye</li>
    </ul>
    </div>
    
    请注意,如果在
    ul
    中单击,而不是在
    li
    上单击,则根据边距和填充,
    event.target
    可能是
    ul
    元素

  • 其他值得一看的东西:

    • -钩住容器上的事件,但让jQuery根据所单击的子对象筛选得到的事件
    • -基本上是文档范围的
      代表

    这将仅在您单击整个div时触发

    $('#outsideContainer').click(function() {
        //do stuff
    });
    
    要捕获对每个
    li
    do的点击:

    $('#outsideContainer ul li').click(function() {
        //do stuff
    });
    

    这只会在您单击整个div时触发

    $('#outsideContainer').click(function() {
        //do stuff
    });
    
    要捕获对每个
    li
    do的点击:

    $('#outsideContainer ul li').click(function() {
        //do stuff
    });
    

    正如T.J.Crowder所指出的,您所拥有的一切都是有效的,但您需要了解
    的上下文。将
    event.target
    替换为
    将为您提供单击的实际元素

    作为演示,我在下面添加了一个提琴,它将提醒已单击元素的节点(标记)类型和文本内容。
  • 都有不同颜色的边框,可以帮助您直观地确定实际单击的内容


    正如T.J.Crowder所指出的,你所拥有的一切都是有效的,但是你需要了解
    这个
    的上下文。将
    event.target
    替换为
    将为您提供单击的实际元素

    作为演示,我在下面添加了一个提琴,它将提醒已单击元素的节点(标记)类型和文本内容。
  • 都有不同颜色的边框,可以帮助您直观地确定实际单击的内容


    我没有包括实际导致问题的javascript(它在
    //do stuff
    中,但我遇到的问题是我在寻找event.target,而不是
    ul
    li
    s的外部容器。

    我没有包括实际导致问题的javascript(这是在
    //do stuff
    中,但我遇到的问题是我在寻找事件。目标只是外部容器,而不是
    ul
    li
    s。

    应该可以很好地工作…看这个小提琴:这里没什么错,你的问题标题复杂是什么意思:?刚刚弄清楚什么错了…我我们正在寻找事件。目标只是
    外部容器
    ,而不是
    ul
    li
    sIt对您自己的问题发布一个答案,然后接受该答案(您必须等待两天,但除此之外)…@T.J.Crowder好的,谢谢。我会的。那应该很好。看这把小提琴:这里没问题,你的问题标题复杂是什么意思:?刚刚弄明白什么错了…我在找这个事件。目标只是
    外部容器
    而不是
    ul
    li
    sIt对我来说很好发布你自己问题的答案,然后接受该答案(你必须等待两天,但除此之外)…@T.J.Crowder好的,谢谢。我会这么做的。谢谢,你间接地帮助了我,因为我在寻找事件。目标只是
    外部容器
    ,而不是
    ul
    li
    s@chromedude哈哈!我没有考虑这个情况。你可能想看看我添加的链接,虽然听起来好像你现在在那里。谢谢,你间接地帮助了我,因为我正在寻找事件。目标只是
    外部容器
    ,而不是
    ul
    li
    s@chromedude哈哈!我没有考虑这个情况。你可能想看看我添加的链接,虽然听起来好像你现在在那里。