here是一个jsfiddle
这是我的 html
<table id="commentsTable">
<tr>
<td name="userid"> JIM </td>
<td name="comment" id="68" class="commentTD"> something </td>
<td><a class="edit" href="#">edit</a></td>
</tr>
</table>
和我的js:
var update = "update";
$("a.edit").click(function(e) {
e.preventDefault();
var comment = $(this).closest("tr").find('.commentTD');
comment.html('<textarea name="comment" class="commentArea">' + comment.text() + '</textarea>');
$(this).removeClass().addClass(update).text(update);
bindUpdate();
});
function bindUpdate() {
$("a." + update).click(function(e) {
e.preventDefault();
var commentNewText = $(this).closest('tr').find('textarea.commentArea').val();
alert(commentNewText);
});
};
我可以添加一个文本区域并将点击事件绑定(bind)到它,但我似乎无法获取新值,我得到了旧值...
最佳答案
问题是您没有从链接中解除旧事件的绑定(bind),因此每次您单击它时它仍然会添加一个新的文本区域,然后它才会调用bindUpdate() 功能。
查看更新后的 jsFiddle:http://jsfiddle.net/RALDF/8/
编辑:我建议将 $(this)
的值保存到变量中并重新使用它,因为您多次调用它,这有对性能产生负面影响/每次执行 $(this)/时 jQuery 都需要创建新对象/
关于jquery val函数从textarea获取新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12816916/