【问题标题】:Trigger event on parent click but not on children在父点击而不是在子点击时触发事件
【发布时间】:2012-06-20 16:17:37
【问题描述】:

如果我有一个绝对定位的父 div,然后有一个具有更高 z-index 并且相对定位的子 div,有没有办法让点击事件仅在父 div 被点击时注册,但不是里面的div?

Relevant jsFiddle

Updated fiddle with text input example

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:
    $(".parent").click(function(e) {
        if (e.target == this) {
            $(this).hide();
        }
    });​
    

    演示: http://jsfiddle.net/Bt5HA/4/

    【讨论】:

    • 小细节,但为什么不使用严格相等?
    • @m59 比较参考时没有区别,否则在这种情况下,速度上可能的纳米差异并不重要。
    【解决方案2】:

    访问子元素并在被点击时返回 false http://jsfiddle.net/Bt5HA/3/

    【讨论】:

    • VisioN 有最好的解决方案,忽略本帖
    【解决方案3】:

    改为:

    $('.child a').click(function(e) {
        $(this).parent('.child').hide();
    });​
    

    【讨论】:

    • 只有当孩子被点击时才有效。如果点击父级会发生什么?
    【解决方案4】:

    试试这个

    $('#child').click(function(event) {
    event.stopPropagation();
    alert('You clicked Child');
    });
    
    
    $('#parent').click(function() {
    alert('You clicked on Parent');
    });
    

    你可以在这里查看工作 http://jsfiddle.net/VnHGh/24/

    【讨论】:

      猜你喜欢
      • 2012-12-07
      • 2019-09-25
      • 2018-04-18
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多