代码之家  ›  专栏  ›  技术社区  ›  Rich

希望jquery忽略单击特定子元素

  •  1
  • Rich  · 技术社区  · 15 年前

    我在一个 div 如果用户单击其中的链接,我希望忽略它 div . 函数如下所示:

    $(".section").click(function(){
        if ($(this).hasClass("solid")) {
            $(this).removeClass("solid");
            $(this).hover(fadeFunction, darkenFunction);
            $(this).fadeTo(150, inactiveOpacity);
        }
        else {
            $(this).addClass("solid");
            $(this).unbind("mouseenter");
            $(this).unbind("mouseleave");
            $(this).fadeTo(25, inactiveOpacity);
            $(this).fadeTo(150, activeOpacity);
        }
    });
    

    我试过用一个 if(!$(this).is("a)) { 但行为没有改变。有人能指出我误解了什么或做错了什么吗?

    抱歉,如果这是一个简单的问题,我是jquery/css初学者。

    2 回复  |  直到 15 年前
        1
  •  12
  •   Nick Craver    15 年前

    您可以检查事件目标是否为锚,如下所示:

    $(".section").click(function(e){
        if($(e.target).is("a")) return;
    
        if ($(this).hasClass("solid")) {
            $(this).removeClass("solid");
                   .hover(fadeFunction, darkenFunction);
                   .fadeTo(150, inactiveOpacity);
        }
        else {
            $(this).addClass("solid");
                   .unbind("mouseenter mouseleave");
                   .fadeTo(25, inactiveOpacity);
                   .fadeTo(150, activeOpacity);
        }
    });
    
        2
  •  5
  •   davehauser    15 年前

    试试这个:

    $('a').click(function(e) {
        e.stopPropagation();
    });
    

    您可以在这里找到文档: http://api.jquery.com/event.stopPropagation/