JQuery手风琴 - 取消绑定点击事件

Sti*_*ofu 8 jquery jquery-ui accordion javascript-events

我正在使用JQuery的手风琴模块编写表单向导.问题是我想覆盖手风琴菜单上的任何鼠标点击,以便在手风琴将显示下一部分之前首先验证表格.

我尝试过以下方法:

$('#accordion h3').unbind();

$('#accordion h3').click(function() {
  if (validate())
  {
    $("#accordion").accordion('activate', 2);
  }else
  {
    alert("invalid form");
  }
}
Run Code Online (Sandbox Code Playgroud)

但上面的代码不起作用.无论表格是否有效,手风琴的内置点击事件仍会被调用,手风琴会显示下一部分.

我也尝试了以下代码:

$('#accordion h3').click(function(event) {
   if (validate())
   {
     $("#accordion").accordion('activate', 2);
   }else
   {
     alert("invalid form");
   }        
   event.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

但是stopPropagation()调用似乎根本不会影响手风琴的行为,无论表单是否有效,都会显示下一部分.

知道我可能做错了吗?

谢谢!

Sti*_*ofu 13

好吧,从编码这个功能中休息了一下,又用一双新鲜的眼睛回到了它.这是解决方案:

$("#accordion").accordion({event: false});
Run Code Online (Sandbox Code Playgroud)

为手风琴初始化代码添加event:false将阻止鼠标点击手风琴菜单执行默认操作,然后我可以编写自定义点击处理代码,以便在用户点击菜单时运行validate()函数,从根本上覆盖手风琴的内置-in如果表单未通过验证检查,则单击功能.

顺便说一句,我在这里使用JQuery UI的手风琴模块.

适用于ie7,8,chrome 19,ff 3.0.3