我在JSP中有一个表,它以下列方式显示列表的内容:
<tbody>
<c:forEach items="${A_List}" varStatus="status" var="alist">
<tr role="row" id="colorRow">
<td>${alist.A}</td>
<td>${alist.B}</td
<td>${alist.C}</td>
<td id="ID1">${alist.D}</td>
</tr>
</c:forEach>
</tbody>
现在D列将显示几个字符串。我想根据显示的值隐藏某些行。让我们说我只想展示具有价值的记录&#34; SHOWME&#34;并隐藏其余部分。我正在使用以下jQuery代码:
$(function agreed(){
var arr=[];
$("#ID1").each(function(){
arr.push($(this).text());
});
$.each(arr,function(index,value){
if(value != "AGREED"){
("#this").parent().hide();
}
});
});
然而,似乎没有任何事情发生。现在,它在某种程度上被标记为重复。但是,它被标记为重复的问题的答案在我的案例中并不起作用。
答案 0 :(得分:1)
你有很多问题。首先,id
属性旨在为元素提供唯一标识符,因此您不应在循环JSP标记内部执行<td id="ID1">...</td>
。请改用class
属性。
其次,您创建一个包含您正在查看的列的所有文本的数组。这很好,但它并没有真正为你做任何事情。没有办法从字符串向后工作到它来自的特定元素。
稍后,你执行$('#this').parent().hide()
,它会查找ID为“this”的元素(不存在),获取任何匹配元素的父元素(没有),并尝试隐藏它们(没有选择任何元素,所以什么也没做。)
你可以做的是:
$(function() {
$('.ID1').filter(function() {
return $(this).text() != 'AGREED';
}).parent().hide();
});
选择“ID1”类的所有<td>
元素(不是id - 请参阅上面有关您需要更改的原因),将其过滤到文本内容不匹配的元素要保留的值,获取其父元素(整行),然后隐藏它们。