Javascript 为什么wrap会导致我的输入丢失模糊?
我将jQuery 2.0.3与以下代码片段一起使用:Javascript 为什么wrap会导致我的输入丢失模糊?,javascript,jquery,binding,Javascript,Jquery,Binding,我将jQuery 2.0.3与以下代码片段一起使用: 函数固定文本框(元素){ var span=“”; var wrap=$(元素).wrap(跨度); } $(document).on(“focus”,“.k-textbox”,function()){ console.debug(“焦点”); fixTextbox(这个); $(this.parent().addClass(“k-state-focused”); }); $(document).on(“blur”,“.k-textbox”
函数固定文本框(元素){
var span=“”;
var wrap=$(元素).wrap(跨度);
}
$(document).on(“focus”,“.k-textbox”,function()){
console.debug(“焦点”);
fixTextbox(这个);
$(this.parent().addClass(“k-state-focused”);
});
$(document).on(“blur”,“.k-textbox”,function()){
控制台调试(“模糊”);
$(this.parent().removeClass(“k-state-focused”);
});代码>
我认为问题在于,当您使用另一个元素包装输入元素时,它会强制某种浏览器对渲染树进行回流,从而导致输入元素失去焦点
演示:-在chrome中看到-在控制台中,您可以看到记录的焦点和模糊
一个可能的解决方案是在焦点事件准备就绪之前,或者如果元素是动态创建的,那么在元素创建过程中,将跨度环绕
jQuery(function ($) {
$('.k-textbox').wrap('<span class="k-widget k-autocomplete k-header k-state-default"></span>')
})
jQuery(函数($){
$('.k-textbox')。换行('')
})
演示:提供一个JSFIDLE复制您的问题。处理程序不应该被删除,不管怎么说,你是在委派事件,在这里如何丢失模糊?我认为问题在于包装元素会导致浏览器中的回流,这会从输入中移除焦点element@Arun约翰尼:您的JSFIDLE似乎准确地显示了问题所在。Jquery包装函数使用克隆!太糟糕了