当我不想要它时,jquery .click覆盖主播href!

我有一组嵌套的DIV,当用户点击它们时,使用jQuery进行滑动。 在最里面的DIV内部有一个带有HREF的锚标签,它应该在某个地方导航。 问题是,当我点击链接时,它就像父DIV一样滑动,而不是导航到url。 如果我右键单击锚点并选择在新选项卡中打开,那么导航就可以了。 请问你能发现什么问题吗? 谢谢

  • ThirdParty

    Bobs shop

     Gifts

  • $("div.subSystemHeader, div.subSystemHeader").click(function() { $("> div", this).slideToggle(...); return false; });

    这里有一些变化,没有必要重复相同的选择器,并检查事件是否来自标签,如下所示:

     $("div.subSystemHeader").click(function(e) { if(e.target.nodeName == 'A') return; //skip this handler, don't return false $("> div", this).slideToggle(...); return false; }); 

    你可以在这里测试一下 。 如果事件目标来自 (没有它的子项),那么我们只是退出处理程序,返回undefined ,因为我们没有显式返回falseclick事件会正常进行…转到href

    您可以检查点击的事件对象,然后检查事件目标 – 另请参阅http://api.jquery.com/event.target/

      $("div.subSystemHeader, div.subSystemHeader").click(function(event) { if(event.target.nodeName.toLowerCase() == 'a') return; ... } 

    (没有测试它,但它应该工作)

    你的问题是return false; 这阻止了默认行为。

     $("a:eq(0)").click(function() { return false; /* does nothing */ }); $("a:eq(1)").click(function() { /* go to href */ }); 
    • 关于jsFiddle的示例

    我今天刚遇到这个问题。 我发现了一篇非常有趣的文章可能有所帮助。 它描述了’return false’和Jquery事件的错误(使用)( http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/ )。 我没有在您的示例中测试以下代码,但我认为这应该可行。

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