希望JQuery忽略点击特定的子元素

Ric*_*ich 1 jquery

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

我已经尝试将if/else包装在一个if(!$(this).is("a)) {但是行为没有变化.有人能指出我误解或做错了什么吗?

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

Nic*_*ver 13

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

$(".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);
    }
});
Run Code Online (Sandbox Code Playgroud)


dav*_*ser 6

试试这个:

$('a').click(function(e) {
    e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

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

  • 这是正确的方法,但您可能希望将其限制在指定div中的链接,而不是所有链接,例如`$("div.section a").click(...`. (3认同)
  • 请记住,这是一个更昂贵的方法,当事件发生时添加if check*而不是不必要地绑定`n`事件处理程序更便宜:) (3认同)