Javascript 使用JQuery选择标题之间的所有表行
具有以下自动生成的表布局(我几乎不影响它)Javascript 使用JQuery选择标题之间的所有表行,javascript,jquery,forms,dom,Javascript,Jquery,Forms,Dom,具有以下自动生成的表布局(我几乎不影响它) 一第一标题 有问题吗? 第二个标题 。。。我想使用Javascript/jQuery选择两个标题之间的所有-元素 为了提供以下功能: 隐藏属于某个标题的所有问题 自动编辑s(例如,选中/取消选中全部或恢复默认) 导致所需操作的链接已在正确的标题中 解决此问题的最佳方法是什么?您可以使用它来解决此问题 function getRows(start){ return start.nextUntil(function(i, v){
一第一标题
有问题吗?
第二个标题
。。。我想使用Javascript/jQuery选择两个标题之间的所有
-元素
为了提供以下功能:
- 隐藏属于某个标题的所有问题
- 自动编辑
s(例如,选中/取消选中全部或恢复默认)
function getRows(start){
return start.nextUntil(function(i, v){
return $('th', v).length > 0;
});
}
演示:
显示/隐藏的实现
$('table').on('click', '.used-for-some-action', function(){
getRows($(this).closest('tr')).toggle();
return false;
});
演示:
更新:基于@BLSully的评论
$('table').on('click', '.used-for-some-action', function(){
$(this).closest('tr').nextUntil('tr:has(th)').toggle();
return false;
});
演示:我喜欢阿伦·约翰尼的答案。以下是我最初的想法(这段代码实现了隐藏/显示功能) 小提琴:试试这个:
$("tr:has(th)").each(function(){
if ($(this).find('th').length==2) {
// here you have this: that represent the row which have two td
}
})
我会保持简单。您使用的是JavaScript,因此当页面加载时,只需使用
向行添加一个类,然后使用该类
$(function() {
$("th").parent().addClass("hasTH");
});
然后,您可以简单地将具有hasTH
类的行作为目标
另一种选择是在页面加载时仍然这样做,但不是添加类,而是将行分组到新的
元素中。这将为您提供最纯粹的DOM表示。一个好的开始是在每个包含标题的
中添加一个类,这样当您遍历DOM时,您就不必不必要地通过父/子对象上下移动。但是他无法控制HTML。您想选择
还是
s@MahmoudFarahat我实际上只想选择包含
s的
s。我称之为问题块。nextUntil
…这个方法到底是从哪里来的?!哈哈,从没听说过,好主意:)@Arun P Johny我应该如何对每个元素执行操作?穆罕默德·阿里在他的回答中说,我应该使用这个。这是迄今为止最好的答案。为了论证起见,另一种选择可能是:start.nextUntil('tr:has(th)')
@BLSully是的,这是最好的one@BLSully也许你应该把它作为一个答案,这真的可能吗?我一直认为表中只能有一个
。@Jakub:可以有任意多个
。这是他们观点的一部分。它提供了一种对行进行逻辑分组的有效方法。如果因为不控制源代码而需要修复DOM,我会采用这种方法,因为这是我在服务器上所做的……无论哪种方式,我都会避免重复复杂的DOM选择,而倾向于修复DOM,以提供如果控制源代码就可以创建的干净的选择过程。
$("tr:has(th)").each(function(){
if ($(this).find('th').length==2) {
// here you have this: that represent the row which have two td
}
})
$(function() {
$("th").parent().addClass("hasTH");
});