2017-06-26 47 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)); 

這應該工作