重新点击输入字段时,jQuery Datepicker挂起(Chrome)

我有这个jsFiddle: http : //jsfiddle.net/VebTY/

看起来这只是chrome中的一个问题。

当您单击页面中的某个项目时,它会添加一个文本字段,然后会弹出日期选择器。 当您单击文本框然后返回文本框时,浏览器将挂起5-10秒。 为什么这样做,我该如何解决?

这是我的相关代码:

$(document).on("focus", "td input[type=text]", function(e) { e.stopPropagation(); if ($(this).closest("td").attr("data-type") === "date") { var dt = $(this).val(); $(this).not(".hasDatePicker").datepicker(); $(this).datepicker("setDate", dt); } }); $(".editable").click(function(e) { if (!$(e.target).is('input, textarea')) { $(".editable").each(function() { if ($(this).has("input")) { var v = $(this).children("input.input, textarea").attr("data-orig"); $(this).text(v); } }); var type = $(this).attr("data-type"); var val = $(this).text(); if (type === "text" || type === "date") { str = '
'; } else if (type === "textarea") { str = '
'; } str += ''; str += ''; $(this).html(str); $(this).find("input[type=text], textarea").focus(); } });

你在这里创建一个无限循环。

问题的原因在第7行:

 $(this).datepicker("setDate", dt); 

它创建了一个无限循环,您的焦点事件将被触发,直到一切崩溃

我会试着弄清楚如何解决这个问题,很快就会用小提琴进行更新

更新:

发现你的问题! 这是一个工作小提琴

这个问题是由这条线引起的:

 $(this).not(".hasDatePicker").datepicker(); 

类名是hasDatepicker而不是hasDatePicker 。 这是一个棘手的问题:D