我有一个html表,其中每行的第一个单元格包含一个复选框。我想通过选中复选框获取每行的索引。我可以访问JQuery js/$
这是我到目前为止所做的,但它只返回Javascript对象,我无法从中提取索引。
(-> (js/$ "#table tr")
(.has ":checkbox:checked")
(.find "td:eq(1)")
(.each (fn [e] (.text (js/$ e)))))
答案 0 :(得分:2)
我不熟悉问题中的语法,但这个jquery代码应该很容易翻译。
:checked
.closest(selector)
tr elements
.index()
$("button").on("click", function() {
var trs = $("input:checked").closest("tr"); //get tr elements of checked inputs
var indexes = $.map(trs, function(tr) { return $(tr).index(); }); //make an array containing the indexes of these tr elements
console.log(indexes);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Get Selected Indexes</button>
<table>
<tr>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
</tr>
</table>
&#13;
答案 1 :(得分:0)
基于Ozan的Javascript答案,我能够提出这个解决方案:
(.map js/$ (-> (js/$ "#table tr")
(.has ":checkbox:checked")) (fn [tr] (.index (js/$ tr))))
答案 2 :(得分:0)
Ozan 的解决方案按我的预期工作,但是,如果我搜索特定术语并在新呈现的表中选择一行(过滤后),我得到的索引是相对于这个新表的。为了避免这种情况,我先清除过滤,然后使用 Ozan 的答案。我不认为这是最好的方法,但我把它放在这里,以防它可以帮助任何面临相同问题的人。
我使用这行代码在获取索引之前清除过滤器。
table.search("").draw();