如何打印基于foreach语句更改的div的内容?

时间:2017-07-28 10:14:31

标签: javascript java jquery jsp java-ee

我有一个名为conversations_client的ArrayList,我希望能够获得每个div的会话值[6]。 每个媒体div代表一个对话。 这是我的代码的一部分:

SELECT * FROM ALL_POSTS AS A
    LEFT JOIN MOVIES AS B ON A.post_id = B.post_id AND A.type = B.type
    LEFT JOIN MUSIC AS C ON A.post_id = B.post_id AND A.type = C.type

我首先尝试使用此代码:

<c:forEach var="conversation" items="${conversations_client}" >
    <div class="media">
        <div class="media-left">
            <input class="checkbox" type="checkbox" name="selected-conv">
        </div>
    <div class="media-body">
         <h4 class="media-heading">${conversation[0]}</h4>
         <span class="hidden">${conversation[6]}</span>
 ......

但它不仅会打印对话[6],还会打印其他人,因为他们都会在课堂媒体内部进行讨论。

然后我尝试了这个:

<script type="text/javascript">
    $('.media').click(function(){
       var text = $(this).text();
       alert(text);
    });     
</script>

但它会为所有div打印相同的id,这是第一个的id。

我该怎么做?将那些带有标签的媒体div包装起来以便能够为每一个使用特定的动作会更好吗?因为我正在显示所有会话,所以一旦用户点击其中一个,我将不得不恢复其ID以便能够显示该特定会话的消息,并且不建议在其中编写Java代码jsp。

谢谢:)

1 个答案:

答案 0 :(得分:1)

使用当前元素中的find

$('.media').click(function()
    {
        var text = $(this).find('#hidden').text();
        alert(text);
   });

<强>更新

您正在使用循环重复标记。根据W3C标准,多次使用ID hidden并不好。 ID应该是唯一的,并且应该在页面中使用一次。

使用class代替id进行多次使用。在这种情况下class="hidden"

更好地将<span id="hidden">${conversation[6]}</span>更改为<span class="hidden">${conversation[6]}</span>

同时更改JS以查找.hidden

 $('.media').click(function()
    {
        var text = $(this).find('.hidden').text();
        alert(text);
   });