Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么wrap会导致我的输入丢失模糊?_Javascript_Jquery_Binding - Fatal编程技术网

Javascript 为什么wrap会导致我的输入丢失模糊?

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”

我将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”,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包装函数使用克隆!太糟糕了