如何在单击链接时停止切换脚本结束?

时间:2013-02-01 16:49:30

标签: javascript jquery

我正在使用以下代码来显示/隐藏导航及其子项。它按预期工作。当导航显示,然后我点击其中一个子链接时,它会关闭,然后将我带到一个新页面。

 // swap classes for lower level nav
  jQuery('.toggle').click(function() {
  $(this).toggleClass('toggle');
  $(this).toggleClass('toggle_open');
 });

 jQuery('a.portfolio').click(function(e) {
  e.preventDefault();
 });

它不适用于Safari,但Chrome和& Firefox显示上面的行为。当我看到检查员打开时发生的事情;我单击父链接,应用切换类,单击子链接,切换类切换回来。

如何在导航到达请求的页面之前停止导航?

我的标记(非传统的导航 - 我知道):

<span class="toggle">
 <a href="portfolio/" class="level1 portfolio">Portfolio</a>
   <span>
     <a href="portfolio/item1/" class="first level2">item 1</a>
     <a href="portfolio/item2/" class="level2">item 2</a>
     <a href="portfolio/item3/" class="last level2">item 3</a>
   </span>   
</span>

2 个答案:

答案 0 :(得分:1)

您应该将e.stopPropagation()添加到所有<a>的点击处理程序,然后移除e. preventDefault(),这会阻止您转到新页面。

试试这段代码:

jQuery('.toggle').click(function() {
  $(this).toggleClass('toggle');
  $(this).toggleClass('toggle_open');
 });

 jQuery('.toggle a.level2').click(function(e) {
    e.stopPropagation();
 });

答案 1 :(得分:0)

尝试e.stopPropagation()以阻止调用其他事件处理程序。您可能需要更改事件处理程序的顺序。