因爲我沒有發現任何問題之前詢問,關於如何切換表格行點擊複選框,所以我想分享我的做法...點擊表格行選擇複選框使用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