如何从jstl foreach到jQuery访问变量值

How to access variable values from jstl foreach to jQuery

本文关键字:jQuery 访问 变量值 foreach jstl      更新时间:2023-09-26

大家好,这可能是一个简单的问题,但我发现它相当棘手。场景:我正在使用jstl foreach打印数据库表中的所有值。

<c:forEach items="${pal}" var="p">
    <tr>
        <td><c:out value="${p.pid}"></c:out></td>
        <td><c:out value="${p.pname}"></c:out></td>
        <td><c:out value="${p.pdesc}"></c:out></td>
        <td><c:out value="${p.pestd}"></c:out></td>
        <td><a id="popa" href="#">Allocate</a></td>
    </tr>
</c:forEach>

现在onclick分配按钮,我想要那个特定的pid(即假设有1,2,3,…,10个pid,所以当我点击第4个,我应该得到第4个pid值)在jquery。

但是在jQuery中,当我尝试获取这个值时我总是得到循环中的最后一个值无论我点击哪个按钮

In jQuery Section

 $("a#popa").click(function(){
     var input = $("<c:out value='${pid}' />");
     alert(input);
 });

,我也试过这个

 <c:forEach var='lang' items='${paramValues.pid}'>
     <label><font color='#00CC00'><c:out value='${lang}'/></font></label>
 </c:forEach>
 but nothing works

请帮助我并指导我如何在jQuery中获得pid的当前值。

每个id属性的值在整个DOM中应该是唯一的。你在循环中使用id="popa",这意味着会有不止一个。当你尝试用jQuery选择id时,它会给你最后一个。

我会考虑使用以下方法。而不是使用id,使用data-*属性。

<c:forEach items="${pal}" var="p">
    <tr>
    <td><c:out value="${p.pid}"></c:out></td>
    <td><c:out value="${p.pname}"></c:out></td>
    <td><c:out value="${p.pdesc}"></c:out></td>
    <td><c:out value="${p.pestd}"></c:out></td>
    <td><a data-pid="${p.pid}" href="#">Allocate</a></td>
    </tr>
</c:forEach>

然后你可以像这样连接click事件。

$("[data-pid]").click(function(){
  var pid = $(this).data("pid");
  alert(pid);
});