我有一个非常简单的表结构
<table width='50%' id='tabs'>
<tr><td>1</td><td>5</td><td>6</td></tr>
<tr><td>2</td><td>2</td><td>2</td></tr>
<tr><td>3</td><td>2</td><td>2</td></tr>
</table>
这是我的简单脚本,使表格可编辑,这工作正常,但我发现它很慢,代码效率不高。我想改进这个代码。通过我使用jquery 1.3.2的方式< / p>
var z={};
function tdClicks(){
var x="",y="";
$("table tr td").click(function(){
z=$(this);
x = $(this).text() || $(this).find("input[type='text']").val();
if(!x){
x="";
}
$(this).html("<input type='text' size='5' value='"+ x+"' />");
$(this).unbind("click");
$(this).find("input[type='text']").bind("blur", function(){
catchme($(this).val());
tdClicks();
});
});
}
function catchme(wht){
$(z).text(wht);
}
tdClicks();
答案 0 :(得分:4)
试试这个
$("table tr td").on('blur',"input[type='text']", function( e ){
$(this).closest('td').text(
$(this).val()
);
});
$("table").on('click','td', function( e ){
if ( $(this).find('input').length ) {
return ;
}
var input = $("<input type='text' size='5' />")
.val( $(this).text() );
$(this).empty().append( input );
});
你可以找到它http://jsfiddle.net/v7znh/13/
我已经更新了jquery 1.3的代码,作为用户评论
$("table td").click( function( e ){
if ( $(this).find('input').length ) {
return ;
}
var input = $("<input type='text' size='5' />")
.val( $(this).text() );
$(this).empty().append( input );
$(this).find('input')
.focus()
.blur( function( e ){
$(this).parent('td').text(
$(this).val()
);
});
});
答案 1 :(得分:3)
这似乎有点清洁
$("table").on("click", "td:not(.active)", function () {
var $this = $(this);
var $textbox = $("<input>", { type: "text", size: 5, value: $this.addClass("active").text() });
$this.html($textbox);
$textbox.focus();
});
$("table").on("blur", "input:text", function () {
var $this = $(this);
$this.parent().removeClass("active").text($this.val());
});
答案 2 :(得分:3)
您可以使用contenteditable
属性
javascript
$("table tr td").attr("contenteditable", true);
要在Internet Explorer中进行此项工作,请使用以下
$("table tr td").each(function() {
var contents = $(this).html();
$(this).html($("<div>").append(contents));
});
$("table tr td div").attr("contenteditable", true);
查看此问题了解更多详情
答案 3 :(得分:-1)
也许它会有所帮助:
$(function(){
var x="",y="";
$("table tr td").click(function(){
x = $(this).text() || $(this).find("input[type='text']").val();
if(!x){
x="";
}
$(this).html("<input type='text' size='5' value='"+ x+"' />");
$(this).unbind("click");
$(this).find("input[type='text']").bind("blur", function(){
$(this).text($(this).val());
});
});
});
祝你好运