【发布时间】:2017-06-26 17:58:55
【问题描述】:
我有一个带有数据属性的按钮:
<button id="manageEditContract" type="button" class="btn btn-default" data-is-allow-to-edit="@(Model.Contract.IsAllowToEdit)">
@(Model.Contract.IsAllowToEdit ? "Block" : "Unblock")
</button>
当用户单击时,我希望按钮更改其属性。由于我的操作方法返回具有两个属性“IsOk”和“IsAllowToEdit”的 JSON 对象,所以我编写了这个函数:
$('#manageEditContract').on('click', function () {
var isAllowToEdit = $(this).data('isAllowToEdit');
$.ajax({
url: '@Url.Action("ChangeEditOption")',
type: 'POST',
data: { isAllowToEdit: isAllowToEdit },
success: function (data) {
if (data.IsOk) {
$('#manageEditContract').data('isAllowToEdit', JSON.stringify(data.IsAllowToEdit));
}
}
});
});
但它没有改变。
我尝试使用 JSON.stringify,但没有它就没有运气。
更新: 正如答案所暗示的,我应该使用“attr”将值设置为特定属性。但我也意识到,当我获取数据属性的值时,我不应该使用“数据”,因为它一直都是一样的。看起来像“数据”属性缓存数据。 所以,而不是
var isAllowToEdit = $(this).data('isAllowToEdit');
我应该使用:
var isAllowToEdit = $(this).attr('data-isAllowToEdit');
在我的情况下也不需要使用 JSON.stringify。
【问题讨论】:
-
*bollean = boolean
-
如果您执行
if (data.IsOk) { console.log(data); },控制台输出是什么data.IsAllowToEdit属性是否存在并已定义值? -
是的,它存在。我更新了我的答案。感谢您的帮助!
标签: javascript jquery json custom-data-attribute