Javascript jQuery在引用单击时的行为与预期不符

Javascript jQuery在引用单击时的行为与预期不符,javascript,jquery,Javascript,Jquery,我有一个元素,我抓取其中的内容并交换输入,然后我希望用户能够单击输入(以正常方式输入文本),但如果他们单击其他任何位置,则将其交换回文本 然而,即使用户第一次单击页面上的任何位置,click事件似乎也会触发。我的代码在下面,我是否误解了什么 $(document).ready(function(){ $("#thingy").css('cursor', 'pointer'); $("#thingy").one("click", function() { var elem

我有一个元素,我抓取其中的内容并交换输入,然后我希望用户能够单击输入(以正常方式输入文本),但如果他们单击其他任何位置,则将其交换回文本

然而,即使用户第一次单击页面上的任何位置,click事件似乎也会触发。我的代码在下面,我是否误解了什么

$(document).ready(function(){ 
   $("#thingy").css('cursor', 'pointer');
   $("#thingy").one("click", function() { 
     var element = $(this);
     element.css('cursor', 'auto');
     element.css('display', 'inline-block');
     element.fadeOut(100, function(){element.html('<input type="text" size="25" value="' + element.text() + '" style="width:' + element.width() + 'px;height:' + element.height() + 'px;border:none;padding:0px;margin:0px;">')}).fadeIn(100);
     $("#thingy").click(function() {
       return false;
     });    
     $(document).click(function() {
         alert("You clicked off the text-box");
         element.html(element.children('input:text').val());
     });
  }); 
}); 
$(文档).ready(函数(){
$(“#thingy”).css('cursor','pointer');
$(“#thingy”).one(“单击”,函数(){
var元素=$(此);
css('cursor','auto');
css('display','inline block');
fadeOut(100,function(){element.html(“”)}).fadeIn(100);
$(“#thingy”)。单击(函数(){
返回false;
});    
$(文档)。单击(函数(){
警报(“您单击了文本框”);
html(element.children('input:text').val());
});
}); 
}); 

即使是第一次,它也会发出警报的原因是第一次单击
处理程序(
.one()
本身不会
返回false;
.stopPropgaton()
,如下所示:

$(document).ready(function(){ 
   $("#thingy").css('cursor', 'pointer');
   $("#thingy").one("click", function() { 
     var element = $(this);
     element.css('cursor', 'auto');
     element.css('display', 'inline-block');
     element.fadeOut(100, function(){element.html('<input type="text" size="25" value="' + element.text() + '" style="width:' + element.width() + 'px;height:' + element.height() + 'px;border:none;padding:0px;margin:0px;">')}).fadeIn(100);
     $("#thingy").click(function() {
       return false;
     });    
     $(document).click(function() {
         alert("You clicked off the text-box");
         element.html(element.children('input:text').val());
     });
     return false;
  }); 
}); ​
为此:

     $(element).delegate("input", "blur", function() {
       element.html(element.children('input:text').val());
     });

.

在第二个版本中,我得到了错误“未捕获的SyntaxError:意外令牌非法”在chrome中,查找它,发现它的命名似乎不正确,但我看不出是什么原因造成的?@Pez-你从JSFIDLE复制/粘贴了吗?有时一个看起来像空格的奇怪字符滑入其中,尝试删除所有空格,看看它是否修复了它(空格/奇怪字符可能在末尾)不,我使用了stackoverflow发布的代码…嗯…我会到处玩,看看是否可以修复它!
     $(element).delegate("input", "blur", function() {
       element.html(element.children('input:text').val());
     });