$(“#content td”).click(function(){
var clickObj = $(this);
content = clickObj.html();
changeToEdit(clickObj);
});
function changeToEdit(node){
node.html(“”);
var inputObj = $(“<input type=’text’/>”);
inputObj.css(“border”,”0″).css(“background-color”,node.css(“background-color”))
.css(“font-size”,node.css(“font-size”)).css(“height”,”20px”)
.css(“width”,node.css(“width”)).val(content).appendTo(node)
.get(0).select();
inputObj.click(function(){
return false;
}).keyup(function(event){
var keyvalue = event.which;
if(keyvalue==13){
node.html(node.children(“input”).val());
}
if(keyvalue==27){
node.html(content);
}
}).blur(function(){
if(node.children(“input”).val()!=content){
if(confirm(“是否保存修改的内容?”,”Yes”,”No”)){
node.html(node.children(“input”).val());
}else{
node.html(content);
}
}else{
node.html(content);
}
});
}
});
接下来对这段JS做简单的分析,全局变量 var content 用于保存编辑之前表格中的内容,有时候用户对表格进行编辑了但却并不想保存编辑后的结果,就需要将表格中的内容还原到编辑之前,所以当鼠标点击的时候首先要将表格的内容保存起来。
下面这两句$(“#content tr:odd”).css(“background-color”,”#D2B48C”); $(“#content tr:even”).css(“background-color”,”#C0C0C0″); 是让table具备隔行变色,只是为了增加表格的可视性。var inputObj = $(“<input type=’text’/>”); 这一句生成一个可编辑的JQuery对象,也就是要插入表格中的可编辑元素,后面那一串.css()方法是给inputObj对象追加CSS样式,.css()方法不仅可以给某个对象设置CSS样式还可以获取某个对象的CSS样式,JQuery中提供了很多这样的方法。很多时候JQuery方法执行过后返回回来的还是JQuery对象,所以就出现了inputObj.css().css().css()….这样的写法。
appendTo()方法就实现了表格的可编辑性(也可用appendix()),将可编辑元素插入到表格中。.get(0).select()这两个方法是为了选中inputObj中的内容让焦点落在可编辑元素上,需要注意的是这两个方法一定要写在appendTo()之后,inputObj.click(function(){})这个方法也是必不可少的,删掉这个方法会有一个很有趣的bug,大家可以试一试。
紧接着的 keyup(function(event){}),可以通过 event.which 的方式获取键盘按下的键所对应的键值,常用的键值有 Enter键:13、Esc键:27,当用户按下Enter键时,就保存编辑后的内容,并将表格还原成普通表格,当用户按下Esc键时,将表格中的内容还原,也将表格还原成普通表格。










