1

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

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

片段:

$('.editname').on('click', function() {

    var input = $('<input id="editcat" type="text" name="editcat" value="' + name + '" />');
    input.appendTo($(this));
    $("#editcat").focus();
});

$(".editname").focusout(function() {

    $(this).children('input').detach();
    $(this).children('span').show();


});

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

似乎在浏览器有时间处理附加输入appendTo之前,在 IE之后立即调用了 focusout() 事件。focus()

是否有已知的解决方法?

编辑

更改focusoutblur不起作用。显然,问题在于调用$("#editcat").focus();会使.editname焦点松散/模糊。如果我评论那条线,输入看起来没问题,但是当我点击关注它时,它就会分离。

4

3 回答 3

2

尝试使用模糊事件

$(".editname").on('blur', function() {

    $(this).children('input').detach();
    $(this).children('span').show();


});
于 2012-10-09T22:36:52.367 回答
2

事实证明,问题在于附加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/

于 2012-10-10T12:10:21.040 回答
1

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

于 2012-10-09T22:38:19.813 回答