jQuery没有触发'焦点'在.appendTo()之后调用IE。
$("input[type=text]").on("focusin", function() { $(this).css("border-color", "red"); });
$("input[type=text]").on("focusout", function() { $(this).css("border-color", "lightgray"); });
var $content = $("#content");
var $containerBlue = $("#container-blue");
var $containerGreen = $("#container-green");
$("#trigger-btn").on("mousedown", function() {
if($containerBlue.find("#content").length > 0)
$content.appendTo($containerGreen);
else
$content.appendTo($containerBlue);
});
请参阅https://jsfiddle.net/KhD/emzrhnuy/3/
重现的步骤:
有没有办法在不使用setTimeout()的情况下克服这个问题?
答案 0 :(得分:0)
可能的解决方法是手动触发焦点事件,即可以另外设置焦点在任何适当的元素上,所以说'焦点窃取者':
$("#focus-stealer").focus();
请注意,使用文档元素作为“焦点窃取器”可能会在IE中出现一些问题。并且应检查document.activeElement是否未定义。
您也可以使用:
document.activeElement.blur();
为了使这个更具体,可以使用像
这样的smthif($("#container").find(":focus").length > 1)
document.activeElement && document.activeElement.blur();