此代碼完美運行:
attributes = $("#testForm").data();
console.log(attributes);
console.log(Object.keys(attributes).length);
但只有一次,當我動態添加額外的資料屬性 onclick 事件時,它顯示相同的值。我知道這.data()是快取,但是如何動態處理它
例子:
<form id="testForm" data-id="33" data-size="45">
當我呼叫上面的代碼時,它回傳 2,但是當我添加更多資料屬性時,例如:
<form id="testForm" data-id="33" data-size="45" data-color="red" data-activity"1">
上面的代碼仍然回傳 2。
$(function ($) {
attributes = $("#testForm").data();
console.log(attributes);
console.log(Object.keys(attributes).length);
$('#testButton').on('click', function () {
$("#testForm").attr( 'data-size' , 'test' );
$("#testForm").attr( 'data-use' , 'test' );
attributes = $("#testForm").data();
console.log(attributes);
console.log(Object.keys(attributes).length);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="filter-body" id="testForm" data-length="1">
<button id="testButton">test<button>
</form>
getAttribute()并attr()需要特定的資料屬性名稱,在我的情況下,我將有 10,15 個或更多元素的資料屬性,具有不同的名稱,所以我可以傳遞特定的名稱,我正在尋找所有這些的長度,但動態.
uj5u.com熱心網友回復:
如檔案中所述,該data方法僅在第一次呼叫時讀取自定義資料屬性的值。因此,要么使用 data 方法添加您的附加資料(然后 jQuery 將在內部處理存盤),或者,如果您需要它們成為實際的自定義資料屬性,請使用HTMLElement.dataset而不是 jQuery 的 data 方法。
那是 a DOMStringMap,它似乎沒有任何長度或大小屬性-因此您必須遍歷所有條目,并在這樣做時對它們進行計數。https://stackoverflow.com/a/43021996/1427878展示了如何用一個簡單的for-in回圈遍歷它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/413752.html
標籤:
