html - 如何检测对同一行单元格的多次点击并在jquery中防止它?
问题描述
我有一张桌子
<table>
<tr>
<th>Heading 1
</th>
<th>Heading 2
</th>
<th>Heading 3
</th>
<th>Heading 4
</th>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
</table>
当我单击一个特定的单元格时,我会得到它的单元格值。
$('td').click(function () {
var col_index = $(this).text();
console.log("Text: " + col_index);
});
我想要的是,当我单击同一行的不同单元格时,我想提醒一条消息“一旦单击就不能单击另一个值”或类似的东西。
例如,如果您查看表格,我第一次点击值 1,但如果我点击值 2,它应该会阻止我点击。
我怎么做?
解决方案
您可以将单击的单元格的地图存储在特定行中,如果已单击某些内容,则显示警报:
var td_map = {};
$('td').click(function () {
var $this = $(this);
var $td = $this.parent();
var col_index = $(this).text();
if (td_map[$td.index()] === undefined || td_map[$td.index()] === col_index) {
td_map[$td.index()] = col_index;
console.log("Text: " + col_index);
} else {
alert('You cannot select two cells in one row');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<th>Heading 1
</th>
<th>Heading 2
</th>
<th>Heading 3
</th>
<th>Heading 4
</th>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
</table>
推荐阅读
- sql - Oracle 中包含大量元组的表的 SUB 查询执行策略
- java - arrayList 中的前一个元素
- react-native - 将 react-native 组件与 vue-native 结合使用
- godot - 有人可以将此Godot 2代码翻译成Godot 3吗?
- javascript - 从包含承诺的函数返回变量
- java - 如何在包含指定的文件中保留最后 [integer] 行
- html - 您如何解决 img 和屏幕左侧之间的差距以及导航栏选项不匹配的问题?
- javascript - 即使在半空中,如何让球在点击时再次反弹?
- string - 如何测试一个字母是否在列表中?
- laravel - Laravel Mix:提取供应商有什么好处?