[英]How to make part of a table row clickable with JQuery
我希望每个表格行中除最后一个<td>
元素外的所有元素都是一个可点击的单元。 这是我所拥有的:
<table class="table table-bordered" id="dashboard-table">
<thead>
<tr>
<th>Open Date</th>
<th>Name</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@for(ach_case <- caseList) {
<tr>
<div class="clickable-row">
<td>@ach_case.formatDate(ach_case.dateCreated)</td>
<td>@ach_case.name</td>
</div>
<td>
<button type="button" class="btn-warning btn-action"
onclick="window.location='@routes.CaseController.editCase(ach_case.id)';"></button>
</td>
</tr>
}
</tbody>
</table>
jQuery查询
$(document).ready(function(){
$('.clickable-row').click(function() {
console.log("Row clicked");
});
});
这什么也没做。 我很累,希望这只是一个简单的问题。
我对代码进行了一些更改以进行演示-添加警报而不是console.log,但是一种方法是向每个<td>
添加一个可单击类,但最后一个容纳按钮的除外。 您可以将clickable类添加到<tr>
,但是仍然必须防止对每个<tr>
的最后一个<td>
产生影响-最好仅将clickable类添加到想要的<td>
中包括而不是将其添加到整个行并排除最后一个<td>
。
$(document).ready(function(){ $('.clickable').click(function() { alert("Row clicked"); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table class="table table-bordered" id="dashboard-table"> <thead> <tr> <th>Open Date</th> <th>Name</th> <th>Actions</th> </tr> </thead> <tbody> <tr > <td class="clickable">test</td> <td class="clickable">test</td> <td> <button type="button" class="btn-warning btn-action" onclick="window.location='@routes.CaseController.editCase(ach_case.id)';">test</button> </td> </tr> </tbody> </table>
将no-clickable
类添加到您希望不可单击的任何表单元格中:
$(document).on('click', 'tr:not(.no-clickable)', function() { alert('clicked!'); });
tr:not(.no-clickable) th, tr:not(.no-clickable) td { cursor:pointer }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tbody> <tr><th>1</th><td>Clickable row</td></tr> <tr><th>2</th><td>Clickable row</td></tr> <tr><th>3</th><td>Clickable row</td></tr> <tr><th>4</th><td>Clickable row</td></tr> <tr><th>5</th><td>Clickable row</td></tr> <tr class="no-clickable"><th>6</th><td>No clickable row</td></tr> </tbody> </table>
注意
您不能将div元素放在tr元素之后。 而是将您想要的任何内容放入td或th元素中
试试这个代码:
$(document).on('click', 'tr:not(tr:last-child)', function() { alert('clicked!'); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tbody> <tr><th>1</th><td>Clickable row</td></tr> <tr><th>2</th><td>Clickable row</td></tr> <tr><th>3</th><td>Clickable row</td></tr> <tr><th>4</th><td>Clickable row</td></tr> <tr><th>5</th><td>Clickable row</td></tr> <tr><th>6</th><td>No clickable row</td></tr> </tbody> </table>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.