我有多個<td帶有 data 屬性的 > 元素cell-pos,設置為不同的值,如下代碼所示: setUpGrid($gameArea) { for (let rowIdx = 0; rowIdx < this.board.gridSize; rowIdx++) { const $tr = $("<tr>"); $gameArea.append($tr); for (let colIdx = 0; colIdx < this.board.gridSize; colIdx++) { const $td = $("<td>"); $td.data("cell-pos", [rowIdx, colIdx]); $tr.append($td); } } }如果我想檢索<td>cell-pos 值為 [10,10] 的元素,我該怎么做?我知道.attr()我可以只使用選擇器,$('td[data-cell-pos="[10,10]"]')但在這里我使用設置數據屬性.data(),因為我不想直接在 HTML 標記上公開數據屬性值(這就是所做的.attr())任何幫助表示贊賞,謝謝!
1 回答

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
一種方法是找到所有匹配的元素,然后過濾它們的cell-pos數據值是否相同。例如(使用幾個divs):
$('#div1').data('cell-pos', [5, 4]);
$('#div2').data('cell-pos', [4, 5]);
console.log($('div').filter(function() {
let cellpos = $(this).data('cell-pos');
return JSON.stringify(cellpos) === JSON.stringify([4, 5]);
}).text());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="div1">Div 1</div>
<div id="div2">Div 2</div>
請注意,使用JSON.stringify()
比較適用于您所描述的簡單數組,但如果您的數據值變得更加復雜,您可能需要重新編寫比較代碼。
- 1 回答
- 0 關注
- 114 瀏覽
添加回答
舉報
0/150
提交
取消