【发布时间】:2018-06-30 11:55:34
【问题描述】:
我想选择所有单击的tr 中的td,除了具有输入复选框的td。以下代码允许我不选择具有输入字段的td:
$(".table-row td:not(:has(input))").click(function(){...}
但我无法访问另一个td 的值。
是什么导致了问题?如何选择除特定td 之外的所有td?
.html
<tr data-id="{{ test.id }}" class="table-row">
<td class="form-check">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input check-ele check-prevent" type="checkbox" value="">
<span class="form-check-sign">
<span class="check"></span>
</span>
</label>
</div>
</td>
<td>{{ forloop.counter }}</td>
<td name="test_name">{{ test.test_name}}</td>
<td name="test_type">{{ test.test_type}}</td>
<td name="test_date">{{ test.test_date|date:"m/d/Y" }}</td>
</tr>
jQuery
$(".table-row td:not(:has(input))").click(function(){
$('#editModal').modal('show');
let row = $(this).closest('tr').attr('data-id');
var test_name = $(this).find('td[ name="test_name" ]').text();
console.log(typeof(test_name));
// return empty test_name. The row I click on has test_name with value `Entrance Exam`
var test_type = $(this).find('td[ name="test_type" ]').text();
var test_date = $(this).find('td[ name="test_date" ]').text();
var date = new Date(test_date);
var day = ("0" + date.getDate()).slice(-2);
var month = ("0" + (date.getMonth() + 1)).slice(-2);
var test_date = date.getFullYear()+"-"+(month)+"-"+(day) ;
$('#edit_test_date').val(test_date);
$("#edit_test_name").val(test_name);
$("#edit_test_type").val(test_type);
【问题讨论】:
-
如果
td有一个输入元素/有索引0/有类.form-check/... -
“但我无法访问其他 td 的值。” 那么您是如何尝试获取其他 td 的值的?请注意,您显示的 js 行只是设置了一个点击处理程序,与访问 td 的内容无关。
-
@PatrickEvans 我已经详细更新了我的帖子。请检查一下。谢谢
-
将
find()更改为siblings()或在行元素中使用find()。您正在寻找其他<td>作为this的孩子,而这不是结构 -
当我看到您的代码时,我认为您仅在有输入时才使用
form-check类,所以如果我没有错,您的选择器将是td:not(.form-check),这就是您要找的吗?
标签: javascript jquery html jquery-selectors