隐藏JSP中的行并基于列中的值

时间:2016-04-07 12:00:41

标签: jquery jsp

我在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();
        }
    });
});

然而,似乎没有任何事情发生。现在,它在某种程度上被标记为重复。但是,它被标记为重复的问题的答案在我的案例中并不起作用。

1 个答案:

答案 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 - 请参阅上面有关您需要更改的原因),将其过滤到文本内容不匹配的元素要保留的值,获取其父元素(整行),然后隐藏它们。