IE中的jQuery focus()和focusout()冲突

不知道如何解决这个问题。

我正在使用jQuery.focus()jQuery.focusout()来触发Ajax请求并重命名WordPress中的post。 这段代码在Chrome和Firefox中运行正常,但我无法让它在IE上运行。

片段:

 $('.editname').on('click', function() { var input = $(''); input.appendTo($(this)); $("#editcat").focus(); }); $(".editname").focusout(function() { $(this).children('input').detach(); $(this).children('span').show(); }); 

工作实例: http //jsfiddle.net/moraleida/fE5Tq/3/

似乎在IE中的appendTo之后立即调用focusout()事件,之后浏览器有时间对附加的输入进行focus()

有没有已知的解决方法?

编辑

focusout更改为blur不起作用。 显然,问题是调用$("#editcat").focus(); 使.editname松散焦点/模糊。 如果我评论该行,则输入显示正常,但是当我单击以关注它时,它会分离。

请尝试使用模糊事件

 $(".editname").on('blur', function() { $(this).children('input').detach(); $(this).children('span').show(); }); 

事实certificate,问题在于将focusout附加到父元素而不是input元素。 这解决了它:

 $(".editname").on('focusout', 'input', function() { // $(this) now refers to the input element, not .editname $(this).siblings('span').show(); $(this).detach(); }); });​ 

最后的工作小提琴供参考: http : //jsfiddle.net/moraleida/fE5Tq/8/

尝试使用模糊事件而不是焦点。