2012-08-02 128 views
0

我有这样的HTML:jQuery preventDefault - 为什么它不起作用?

<header> 
    <div class="navbar navbar-fixed-top"> 
    <div class="navbar-inner"> 
     <div class="container"> 
     <a class="btn btn-inverse pull-left" href="myfile.html"> &larr; prev</a> 
     <ul class="nav"> 
      <li><a href="#">Lorem</a></li> 
      <li class="active"><a href="#">ipsum</a></li> 
      <li><a href="#">Lorem</a></li> 
      <li><a href="#">ipsum</a></li> 
     </ul> 
     <a class="btn btn-inverse pull-right disabled" href="file.html">next &rarr;</a> 
     </div> 
    </div> 
    </div> 
</header> 

和这个JS(在document.ready包装):

$(".disabled").bind('click', function(e){ 
    e.preventDefault(); 
}); 

当我点击禁用链接,我还是打开下一个页面。为什么?

+0

你能设置一个小提琴吗? – Utkanos 2012-08-02 13:32:41

+0

它确实停止jsfiddle中的点击。 http://jsfiddle.net/Xac8G/1/。您确定您在页面中的代码上方附加了jQuery? – Undefined 2012-08-02 13:33:27

+0

只需放一个'alert'来检查处理程序是否绑定。 – 2012-08-02 13:33:36

回答

0

因为它也适用于我作为小提琴,我知道需要在我的脚本的其他部分的问题。有点调试后,我已经找到了问题:

$(".disabled").bind('click', function(e){ 
    e.preventDefault(); 
}); 

在一个on包装设置:

$("#poem").on("click", function() { 
    $(".disabled").bind('click', function(e){ 
    e.preventDefault(); 
    }); 
}) 

这样写它后:

$(".disabled").bind('click', function(e){ 
e.preventDefault(); 
}); 

$("#poem").on("click", function() { 
    // something... 
}) 

现在的工作!

+1

你现在正在讨论那里,现在如果你放弃了bind()并且使用on()来处理第一个处理器,那么你就是金。 – adeneo 2012-08-02 13:52:27