jQuery的焦点()和在IE中事件的内容()冲突(jQuery focus() and focus

2019-10-17 06:47发布

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

我使用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中,浏览器有时间之前focus()上所附的输入。

是否有此已知的解决方法?

编辑

更改focusout ,以blur不起作用。 显然,问题是,调用$("#editcat").focus(); 使得.editname松散聚焦/模糊。 如果我评论这一行,输入显示正常,但是当我点击专注于它,它就会脱落。

Answer 1:

尝试模糊事件,而不是

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

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


});


Answer 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/



Answer 3:

尝试使用模糊事件,而不是事件的内容的。



文章来源: jQuery focus() and focusout() conflict in IE