javascript - 使用jquery单击它时更改td元素的文本
问题描述
我在输出中获取 Json 数据并使用编辑选项附加到表中,所以我想要的是当单击 td 的编辑然后单击 td 元素文本应该从“编辑”更改为“保存”,然后再次单击“保存”它更改为编辑,但有时一个 td 元素应从 'Edit' 更改为 'Save' 一次只有一个 'Save' 应该处于活动状态,其他元素保持 'Edit' 。
<table class="append_data">
<tr>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
<th>Action</th>
</tr>
</table>
//获取数据的脚本:
$.ajax({
url: "<?= base_url('controller/get_users') ?>",
type: 'POST',
data: {
},
success: function (myJSON) {
var output = myJSON;
var html = '';
$.each(output, function (key, value) {
html += '<tr>';
html += '<td>' + value.name + '</td>';
html += '<td>' + value.mobile + '</td>';
html += '<td>' + value.id + '</td>';
html += '<td><a href="javascript:void(0);" style="text-decoration:none;" class="edit_user" data-id="' + value.id + '"><span class="change_res' + value.id + '">Edit</span></a></td>';
html += '</tr>';
});
$('.append_data tbody').append(html);
},
error: function (xhr) {
alert(xhr.status);
}
});
//改变文本的脚本
$("body").on('click', '.edit_user', function () {
var userid = $(this).attr("data-id");
$(this).text('Save').siblings().text('Edit');
});
获取输出:
预期输出:
解决方案
你可以试试
$("body").on('click', '.edit_user', function () {
var userid = $(this).attr("data-id");
$('.edit_user').not(this).text('Edit'); // back all the edit_user to Edit but not this
$(this).text(($(this).text().trim() == 'Save') ? 'Edit' : 'Save'); // change the text for this between Edit or Save
});
说明:
$('.edit_user').not(this).text('Edit');
将所有其他元素文本返回到编辑$(this).text().trim() == 'Save') ? 'Edit' : 'Save'
是 if 语句的简写方法 .. 表示元素的文本是否Save
设置为 Edit ,反之亦然 .. 并在.trim()
此处仔细检查文本是否完全等于字符串
推荐阅读
- java - Android 活动中的问题:ListView 不显示任何项目,即使在最低实现中也是如此
- mysql - 我能知道相关子查询是什么意思吗?
- java - Android:需要用户交互/输入的通知
- c++ - 电位器与第二块 arduino 板的通信状态
- java - 在 SpringRunner 中创建环境 bean 失败
- google-cloud-storage - 使用 TextIO.write 到 Google Cloud Storage 时如何设置文件类型
- nativescript-vue - 用户设置警报后如何强制打开特定活动?
- javascript - 使用 AJAX 只提交一个表单
- python - 使用python可迭代错误的神经风格转移?
- amazon-web-services - 以编程方式跨不同帐户访问 cloudwatch