我必须标记表中的所有行(稍后更改代码以删除行)。
表结构如下:
<table class="table table-striped table-condensed" id="buckettable">
<thead>
...cut out
</thead>
<tbody>
<tr class="success">
<td><input class="fld-bucketno" type="checkbox" name="bucket" value="158bf61f-8f66-4dee-9ff6-b9d1f6d4b840" /></td>
<td class="text-right">
<a class="bucketNo" href="/Sim/Staging/1212">1212</a>
</td>
我感兴趣的是td中锚点的值 - 倒数第二行。
我得到一个要删除的id的json列表。首先我标记它们,然后更改代码以删除它们。这至少就是这个想法。请注意 - 我知道很多编程,但Javascript对我来说是一块未知的土地;)
到目前为止我的代码是:
success: function (resp) {
var table = $('#buckettable').find('tbody')[0];
var length = resp.length;
for (var i = 0; i < length; i++) {
var bucketNo = resp[i];
var rows = table.children.length;
for (var j = 0; j < rows; j++) {
var row = table.children[j];
var bucket = row.find('.bucketNo').text();
if (bucket == bucketNo) {
alert(bucket);
}
}
}
$('#cleanup').modal('hide');
我无法过滤行。我对任何明智的其他方法持开放态度 - 希望它能教会我很多。
在上面的代码中,我设法获取行......但是然后find('。bucketNo')失败,并且异常认为Object#没有找到方法....我觉得这很有趣因为我使用它早先的表格。指向文档的指针非常受欢迎,特别是除了答案之外。
如果有更好的方法可以告诉我。我被告知按ID搜索更快(显然)但不知何故我不确定 - 我应该在每一行设置编码ID(bucket-xxx,xxx是数字)吗?
答案 0 :(得分:2)
有一种更简单的方法可以做到这一点。
var targetBucketNo = 1212;
$('#buckettable a.bucketNo')
.filter(function(item) {
return item.text() == targetBuvketNo;
})
.parent()
.remove();
更详细地解释。以下内容将获取#buckettable表中包含bucketNo类的锚点。
$('#buckettable a.bucketNo')
过滤器将过滤具有目标桶号
的结果.filter(function(item) {
return item.text() == targetBuvketNo;
})
删除将删除元素
.remove();
如果您想要添加课程,可以将.remove()
替换为.addClass('your-class-name')
。这会将其添加到td
元素,因此您应该在.parent()
之前添加addClass
。
答案 1 :(得分:1)
您正在访问原生Javascript children
,因此find()
不是函数。但是,您可以使用jQuery过滤器方法跳过许多本机函数:
var $aTag = $('#buckettable').find('tbody td a.bucketNo').filter(function() {
return $(this).text() == bucketNo
});
alert($aTag.text());
答案 2 :(得分:1)
您还可以使用“bucketNo”类循环所有链接,然后查看ID是否在您的数组中。在此之后获取包含TR并删除它或添加类或其他内容:
var resp = [2323,5656]
$('a.bucketNo').each(function() {
if( resp.indexOf( parseInt($(this).text()) ) != -1 )
$(this).closest('tr').addClass('del');
});