因为我没有发现任何问题之前询问,关于如何切换表格行点击复选框,所以我想分享我的做法...点击表格行选择复选框使用jQuery
回答
为了选择表格中一行的复选框,我们将首先检查我们要定位的元素的type
attribute
是否不是checkbox,如果它不是checbox,那么我们将检查嵌套在该表格行内的所有复选框。
$(document).ready(function() {
$('.record_table tr').click(function(event) {
if (event.target.type !== 'checkbox') {
$(':checkbox', this).trigger('click');
}
});
});
如果你想突出显示checkbox
checked
表行比我们可以使用一个if
条件与is(":checked")
,如果是比我们发现使用.closest()
,比我们最接近的tr
元素使用addClass()
$("input[type='checkbox']").change(function (e) {
if ($(this).is(":checked")) { //If the checkbox is checked
$(this).closest('tr').addClass("highlight_row");
//Add class on checkbox checked
} else {
$(this).closest('tr').removeClass("highlight_row");
//Remove class on checkbox uncheck
}
});
这个问题对我很有用,但是我对以前的解决方案有问题。如果您单击表格单元格中的链接,它将触发复选框切换。 我GOOGLE了这一点,我看到了一个命题放在桌子上的链接添加event.stopPropagation()
,像这样:
$('.record_table tr a').click(function(event) {
event.stopPropagation();
});
该解决方案是一个坏主意,因为我有表的链接上一些jQuery的引导酥料饼。 ..
因此,这里是一个更适合我的解决方案。顺便说一句,因为我使用引导2.3,该行的亮点是通过向tr添加“info”类来完成的。 要使用此代码,您只需将class="selectable"
添加到表格标签。
$(".selectable tbody tr input[type=checkbox]").change(function(e){
if (e.target.checked)
$(this).closest("tr").addClass("info");
else
$(this).closest("tr").removeClass("info");
});
$(".selectable tbody tr").click(function(e){
if (e.target.type != 'checkbox' && e.target.tagName != 'A'){
var cb = $(this).find("input[type=checkbox]");
cb.trigger('click');
}
});
你可能会想更具体与测试条件,为例,如果你有行中的其他投入。
你可能只是触发这个click事件... :)
$(document).ready(function()
{
$("table tr th :checkbox").click(function(event)
{
$('tbody :checkbox').trigger('click');
});
});
OR
$(document).ready(function()
{
$("table tr th :checkbox").on('click',function(event)
{
$('tbody :checkbox').trigger('click');
});
});
触发像许多上面提供的解决方案的点击将导致运行两次的功能。更新道具值来代替:
$('tr').click(function(event){
alert('function runs twice');
if(event.target.type !== 'checkbox'){
//$(':checkbox', this).trigger('click');
// Change property instead
$(':checkbox', this).prop('checked', true);
}
});
即使接受@Mr。外星人的答案效果很好,如果你决定在某些时候用jQuery动态地添加一个新的<tr>
行,那么这种方法无效。
我建议使用事件委托方式,这只是对接受答案的轻微修改。
相反的:
... $('.record_table tr').click(function(event) { ...
使用
... $('.record_table').on('click', 'tr', function(event) { ...
与同为高亮,使用:
... $(".record_table").on('change', "input[type='checkbox']", function (e) { ...
更多的信息在这里:Click event doesn't fire for table rows added dynamically
- 1. Jquery按钮点击选择复选框
- 2. 选择表行并使用jQuery复选复选框
- 3. 上点击单元格,选择/取消选择复选框
- 4. 点击其他复选框使用Jquery启用复选框
- 5. Jquery选择取消选择复选框点击标题
- 6. 单击复选框点击选择Jquery mobile中的所有复选框
- 7. 复选框点击即可使用jQuery
- 8. jquery复选框选择操纵行表
- 9. dgrid选择 - 只有当我点击复选框时选择行
- 10. 选择/点击复选框由labelin硒
- 11. 使用jQuery选择表格中的所有复选框
- 12. 如何避免在点击表格行时选中复选框
- 13. Jquery复选框多选和行选择
- 14. 如何创建表格行选择gridview复选框使用javascript
- 15. 点击了表格行被不选择
- 16. 发现选择复选框使用jQuery
- 17. 使用jQuery选择所有复选框
- 18. 点击使用jQuery后点击复选框
- 19. jQuery通过点击父div选择复选框
- 20. 使用JQUERY,当点击复选框时,全选全部
- 21. 表格中的复选框选择
- 22. 只切换点击行,复选框使用jQuery
- 23. jquery表href选择所有应该只选择点击行
- 24. 网格复选框选择
- 25. 选中表格行点击
- 26. jQuery复选框树选择
- 27. jquery选择器复选框
- 28. jQuery复选框选择
- 29. Jquery复选框选择
- 30. jQuery选择复选框
优秀的解决方案,但有一个轻微的问题(次要),复选框是在标签标签(为CSS目的),你知道任何jQuery的解决方法?最后的手段是只删除标签标签,并将它们全部切换到“span class =”label“或其他东西并更新css。谢谢你是否得到这个或不:) :) – Onimusha
非常棒..你的解决方案节省了很多时间 –
GG。好的一段脚本。谢谢@Mr。外星人! – PipBoy2000