jquery:为什么.click()的触发器必须在链接内?

时间:2014-04-10 15:50:35

标签: jquery

我的页面上有.click()问题。 我想执行这个:

$('.projLink').click(function() {
    $('#project').addClass('projSide');
    $('#wrapper').addClass('wrapSide');
    $('nav').addClass('navSide');
});

html看起来像这样:

<li><span class="projLink">Bone</span></li>

现在可悲的是,这并不奏效。我必须将触发器放在一个链接中才能使它工作:

<li><a href="#project"><span class="projLink">Bone</span></a></li>

我在页面的其他部分使用了.click(),它没有链接标记。这是我的测试页面: http://www.henning-marxen.de/test/投资组合中的第一项有一个链接,其他项目没有。你知道为什么jquery会这样吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

设置类以启动动画的代码工作正常,但随后点击气泡到父元素,在那里它触发删除类的代码以将其移回。使用stopPropagation方法防止点击事件冒泡:

$('.projLink').click(function(e) {
    e.stopPropagation();
    $('#project').addClass('projSide');
    $('#wrapper').addClass('wrapSide');
    $('nav').addClass('navSide');
});