2017-06-26 45 views
-1

属性我有一个数据属性的按钮:无法设置bollean值数据与jquery

<button id="manageEditContract" type="button" class="btn btn-default" data-is-allow-to-edit="@(Model.Contract.IsAllowToEdit)"> 
     @(Model.Contract.IsAllowToEdit ? "Block" : "Unblock") 
</button> 

当用户点击我想要的按钮来更改其属性。由于我的操作方法返回的JSON对象具有两个属性“ISOK”和“IsAllowToEdit”,我写了这个功能:

$('#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,没有它没有运气。

UPDATED: 由于答案建议我应该使用“attr”将值设置为特定属性。但我也意识到,当我获得data属性的值时,我不应该使用“data”,因为它始终是相同的。看起来像“数据”属性缓存数据。 所以,与其

var isAllowToEdit = $(this).data('isAllowToEdit'); 

我应该使用:

var isAllowToEdit = $(this).attr('data-isAllowToEdit'); 

而且JSON.stringify没有必要在我的情况下使用。

+1

* bollean =布尔 – evolutionxbox

+0

什么是控制台输出,如果你做'如果(data.IsOk){执行console.log(数据); }'data.IsAllowToEdit'属性是否存在,并且定义了值? – loelsonk

+0

是的,它存在。我更新了我的答案。谢谢你的帮助! –

回答

1

你可以使用.attr。这样你就不需要使用JSON.stringify

var boolValue = true; 
$('#manageEditContract').attr('data-is-allow-to-edit', boolValue); 

看看它是如何工作的。

var boolValue = true; 
 
$('#manageEditContract').attr('data-is-allow-to-edit', boolValue)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<div id="manageEditContract" data-is-allow-to-edit="false">inspect me</div>

1
$('#manageEditContract').attr('data-is-allow-to-edit', JSON.stringify(data.IsAllowToEdit)); 

这应该工作