2013-12-12 25 views
0

因此,我想从JQueryUI的Accordion的标题中放置一个contenteditable字段,但是,当我尝试将事件绑定到该子对象时,绑定即使我试图解除或阻止继承,手风琴也是优先的。停止单击,输入和箭头绑定标题的孩子

<div class="accord"> 
    <div> 
     <div class="theHead" > 
      <span class="ignoreAccordBinds" contenteditable="true">Edit Me</span> 
     </div> 
     <div class="theBody"> 
     SomeBody 
     </div> 
    </div> 
      ... 

我希望上面的代码忽略所有的手风琴操作时,在跨度内做任何动作。

我已经试过

 $(".ignoreAccordBinds").keypress(function(e){ 
      e.stopPropagation(); 
     }); 
    $(".accord").find(".ignoreAccordBinds").unbind(); 

似乎都没有帮助。

我创建了一个JSFiddle我的问题。如果您尝试使用右箭头键在其中一个标题上移动光标(插入符号),手风琴将选择另一个div。如果您尝试按Enter键,则只会打开/关闭它们而不是插入换行符。

任何人有任何想法吗?

+0

尝试http://jsfiddle.net/arunpjohny/dJbS3/3/ –

回答

1

卸下unbind()并注册KEYDOWN处理机

$(".ignoreAccordBinds").keydown(function (e) { 
    e.stopPropagation(); 
}); 

演示:Fiddle

keypress event当一个键被按下时被触发,该键通常产生一个字符值 - 所以像箭头这样的键不会触发它

+0

啊,是的,这是做到了!应该考虑keydown而不是按键。谢谢! – Jeff

2

使用

$(".ignoreAccordBinds").keypress(function (e) { 
    e.stopPropagation(); 
    return false; 
}); 

你的语法不正确。

$(".ignoreAccordBinds").keypress()(function(e) 
           ^

这里不需要括号。

DEMO

+0

没错,我的地址是错误的,但是这种方法无效。然而,我会在我的小提琴和榜样中纠正它。谢谢 – Jeff

+0

@Jeff,使用'return false;' – Satpal

+0

更新为返回false,仍然没有骰子:http://jsfiddle.net/P93E6/7/另外,按演示中的箭头键仍然不会移动光标,按Enter键不会添加换行符(真的,如果我只能让箭头键工作,我会很高兴) – Jeff