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

时间:2010-08-23 18:36:56

标签: 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);
    }
});

我尝试在if(!$(this).is("a)) {中包装if / else,但行为没有变化。有人可以指出我误解或做错了吗?

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

2 个答案:

答案 0 :(得分: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);
    }
});

答案 1 :(得分:5)

试试这个:

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

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