1

我有以下代码,但尽管使用 event.preventDefault() 单击链接仍会导致打开该目标 div!我已经阅读了stackoverflow中关于这个问题的所有问题,但他们都没有解决我的问题。警报部分已完成,但 event.preventDefault() 不起作用!请帮我!

html是:

<ul class="projects-info">
   <li><a href="#tabs-1">file upload</a></li>                                                                       
   <li class="projects-det"><a href="#tabs-2">file specification</a></li>
</ul>
<div style="border:1px solid  #1c94c4;" id="tabs-2">
   this is the div content
</div>

jQuery是:

<script type="text/javascript" src="Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
   $(document).ready(function ()
   {
      $("ul.projects-info li.projects-det a").bind('click',function(event)
      {
         event = event || window.event;
     alert("for checking");
         if(event.preventDefault)
         {
            event.preventDefault(); 
         }
         if (event.stopPropagation) 
         {
            event.stopPropagation();
         }
         return false;
   });
});
4

1 回答 1

2

看起来您正在使用其他一些库来支持选项卡式界面。

如果该链接是指向另一个页面的常规超链接,那么“是”preventDefault将阻止这种情况发生。

但是,如果有两个处理程序绑定到同一个事件(在您的情况下为“单击”),那么每个处理程序都彼此独立工作。你无法控制秩序,他们也无法互相压制。

因此,必须执行制表符的处理程序仍然会被激活。

这是一个小提琴:http: //jsfiddle.net/4J9Ap/

两个处理程序绑定到同一个链接 - 都触发。

$(document).ready(function ()
   {
      $("ul.projects-info li.projects-det a").bind('click',function(event)
      {
         event = event || window.event;
         if(event.preventDefault)
         {
            event.preventDefault(); 
         }
         if (event.stopPropagation) 
         {
            event.stopPropagation();
         }
         alert("handler 1")
         return false;
      });

     $("a#myLink").bind('click',function(event)
      {
         event = event || window.event;
         if(event.preventDefault)
         {
            event.preventDefault(); 
         }
         if (event.stopPropagation) 
         {
            event.stopPropagation();
         }
          alert("handler 2")
         return false;
      });
});
于 2013-08-14T22:51:15.153 回答