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/
尝试使用模糊事件而不是焦点。