Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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
Javascript 执行父div方法而不是子div方法';JQuery中的s_Javascript_Jquery - Fatal编程技术网

Javascript 执行父div方法而不是子div方法';JQuery中的s

Javascript 执行父div方法而不是子div方法';JQuery中的s,javascript,jquery,Javascript,Jquery,我的html中有以下结构: <div class="parent"> <div class="child"></div> </div> 假设css尽可能简单,只需单击div即可 现在我的问题是:如何才能在.child类中设置jQuery操作来执行方法集2,而不是方法集1之后执行 我希望看到什么: 当用户单击.parent类时,它将只执行属于该操作调用的第一组方法 当用户单击.child类时,它将只执行属于该操作调用的第二组方法 我的代码会

我的html中有以下结构:

<div class="parent">
    <div class="child"></div>
</div>
假设css尽可能简单,只需单击div即可

现在我的问题是:如何才能在
.child
类中设置jQuery操作来执行
方法集2
,而不是
方法集1
之后执行

我希望看到什么:

当用户单击
.parent
类时,它将只执行属于该操作调用的第一组方法

当用户单击
.child
类时,它将只执行属于该操作调用的第二组方法

我的代码会发生什么:当用户单击父类时,会调用第一个set方法[确定]

当用户单击
.child
类时,首先执行
方法集2
,然后调用
方法集1
并执行它们[失败]

到目前为止,我尝试了什么:

对我来说,这不是一个简单的问题,它让我远离了许多想法,迫使我多次改变计划

  • 我尝试在我的
    .parent
    选择器中设置如下:

    $('.parent').not('.child').click(function() {
        //Methods Set 1
    });
    
    但是,即使我的控制台中没有任何错误(我在Firefox中使用
    firebug
    来调试日志),我也没有得到预期的结果

  • 我也在我的
    .parent
    课程中尝试了这个方法,但也没有得到我期望的结果

    $('.parent:not(.child)').click(function() { /*Methods Set 1 */});
    
  • 使用stopPropagation()函数

    使用stopPropagation()函数

    好的,在得到了一些指导我回答问题的人的帮助后,我找到了答案

    我真正想要的是
    .parent
    课程。 因此,我的代码如下:

    $('.parent').click(function() {
        //Methods Set 1
    }).children().click(function(e) {
        return false;
    });
    
    澄清

    从jQuery Api页面:

    描述:防止事件在DOM树中冒泡, 防止任何父处理程序收到事件通知

    因此,当我使用事件冒泡时,
    .child
    的事件处理程序将首先执行,然后是
    .parent
    的事件处理程序,在我使用
    Event.stopPropagation()时忽略它

    好的,在得到了一些指导我回答问题的人的帮助后,我找到了答案

    我真正想要的是
    .parent
    课程。 因此,我的代码如下:

    $('.parent').click(function() {
        //Methods Set 1
    }).children().click(function(e) {
        return false;
    });
    
    澄清

    从jQuery Api页面:

    描述:防止事件在DOM树中冒泡, 防止任何父处理程序收到事件通知

    因此,当我使用事件冒泡时,
    .child
    的事件处理程序将首先执行,然后是
    .parent
    的事件处理程序,在我使用
    Event.stopPropagation()时忽略它


    这个问题的公认答案应该会有所帮助:@ShaunScovil我很抱歉没有达到我的预期。我得到的是event.target和currentTarget之间的区别,这里有更好的解释:请参阅我编辑的答案。抱歉弄错了此问题的公认答案应该会有所帮助:@ShaunScovil我很抱歉没有达到我的预期。我想了解的是event.target和currentTarget之间的差异,这里有更好的解释:请参阅我编辑的答案。对不起,弄错了。对不起,我弄错了。复制+粘贴函数名我发现了同样的方法,所以我发布了我自己的答案,这是在你的答案之后,因为我没有从编辑中看到它。我还补充了一些解释。对不起+行动。对不起,我弄错了。复制+粘贴函数名我发现了同样的方法,所以我发布了我自己的答案,这是在你的答案之后,因为我没有从编辑中看到它。我还补充了一些解释。对不起+1.
    $('.parent').click(function() {
        //Methods Set 1
    }).children().click(function(e) {
        return false;
    });
    
                   / \
    ---------------| |-----------------
    | parent       | |                |
    |   -----------| |-----------     |
    |   |child     | |          |     |
    |   -------------------------     |
    |        Event BUBBLING           |
    -----------------------------------