我的javascript中有一个变量假设var oneTR= $("#Grp1");
,我可以使用this solution将3个TR的组合并到Combined
行。
我想要的是:
在一个合并行中的第二个inputs
之后获取所有textarea
<table id="t01">
<tr>
<th>HEAD 1</th>
<th>HEAD 2</th>
<th>HEAD 3</th>
</tr>
<tr id="Grp1">
<td>Grp1 data</td>
<td>Grp1 data</td>
<td>Grp1 data</td>
</tr>
<tr>
<td>Grp1 data</td>
<td>Grp1 data</td>
<td><textarea></textarea></td>
</tr>
<tr>
<td>Grp1 data</td>
<td><textarea></textarea></td>
<td><input type="text"><input type="text"></td>
<td><input type="text"><input type="text"></td>
<td><input type="text"></td>
</tr>
<tr id="Grp2">
<td>Grp2 data</td>
<td>Grp2 data</td>
<td>Grp2 data</td>
</tr>
<tr>
<td>Grp2 data</td>
<td>Grp2 data</td>
<td><textarea></textarea><input type="text"></td>
</tr>
<tr>
<td><textarea></textarea></td>
<td><input type="text"><input type="text"></td>
<td><input type="text"><input type="text"></td>
<td><input type="text"></td>
</tr>
<tr id="Grp3">
<td>Grp3 data</td>
<td>Grp3 data</td>
<td>Grp3 data</td>
</tr>
<tr>
<td>Grp3 data</td>
<td>Grp3 data</td>
<td><textarea></textarea><input type="text"></td>
</tr>
<tr>
<td><textarea></textarea></td>
<td><input type="text"><input type="text"></td>
<td><input type="text"><input type="text"></td>
<td><input type="text"></td>
</tr>
</table>
我试过这样的解决方案:
var finalinps = oneTR.add(oneTR.nextUntil("#Grp2")).find("textarea").eq(1).nextAll(":input");
console.log("finalinps: ", finalinps.length); //finalinps: 0
但这不起作用。这是JSFiddle
注意 - 我正在使用此行textarea
,但不只是inputs
oneTR.add(oneTR.nextUntil("#Grp2")).find("textarea").eq(1)
答案 0 :(得分:2)
修改,更新
尝试
// updated to return `oneTR1 , 6 `input elements` following second `textarea`
var finalinps = oneTR.add($("#t01 input").filter(function(i, el) {
return $("#t01 textarea:eq(1)").parents("tr").index() >=
$(el).parents("tr").index()})
);
var oneTR = $("#Grp1");
//var finalinps = oneTR.add(oneTR.nextUntil("#Grp2")).find("textarea").eq(1).nextAll(":input");
var finalinps = oneTR.add($("#t01 input").filter(function(i, el) {
return $("#t01 textarea:eq(1)").parents("tr").index() >= $(el).parents("tr").index()
}));
console.log("finalinps: ", finalinps.length, finalinps);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="t01">
<tr>
<th>HEAD 1</th>
<th>HEAD 2</th>
<th>HEAD 3</th>
</tr>
<tr id="Grp1">
<td>Grp1 data</td>
<td>Grp1 data</td>
<td>Grp1 data</td>
</tr>
<tr>
<td>Grp1 data</td>
<td>Grp1 data</td>
<td>Grp1 data</td>
</tr>
<tr>
<td>Grp1 data</td>
<td>
<textarea></textarea>
</td>
<td>
<input type="text">
<input type="text">
</td>
<td>
<input type="text">
<input type="text">
</td>
<td>
<input type="text">
</td>
</tr>
<tr id="Grp2">
<td>Grp2 data</td>
<td>Grp2 data</td>
<td>Grp2 data</td>
</tr>
<tr>
<td>Grp2 data</td>
<td>Grp2 data</td>
<td>
<textarea></textarea>
<input type="text">
</td>
</tr>
<tr>
<td>
<textarea></textarea>
</td>
<td>
<input type="text">
<input type="text">
</td>
<td>
<input type="text">
<input type="text">
</td>
<td>
<input type="text">
</td>
</tr>
<tr id="Grp3">
<td>Grp3 data</td>
<td>Grp3 data</td>
<td>Grp3 data</td>
</tr>
<tr>
<td>Grp3 data</td>
<td>Grp3 data</td>
<td>
<textarea></textarea>
<input type="text">
</td>
</tr>
<tr>
<td>
<textarea></textarea>
</td>
<td>
<input type="text">
<input type="text">
</td>
<td>
<input type="text">
<input type="text">
</td>
<td>
<input type="text">
</td>
</tr>
</table>
答案 1 :(得分:1)
试试这个:
工作Demo
oneTR.add(oneTR.nextUntil("#Grp2")).find("textarea").eq(1).parents('tr').find('input');
console.log("finalinps: ", finalinps.length);
答案 2 :(得分:0)
您可以使用以下js:
获取第二个文本区域旁边的文本输入元素的长度//get the index of 2nd textarea tr
var curIndex = $("table textarea:eq(1)").closest("tr").index();
//get the length of text input elements
var txtlen = $("table tr:eq("+curIndex+")").nextAll('tr').andSelf().find("input[type=text]").length;
alert(txtlen);