大家好,这可能很容易,但我发现它很棘手。 场景是我使用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 Allocate按钮我想要那个特定的pid(即假设有1,2,3,...,10 pid所以当我点击第4个时我应该得到第4个pid作为值)在jquery中。< / p>
但是在jQuery中,当我尝试获取该值时,无论我点击哪个按钮,我总是在循环中得到最后一个值。
在 jQuery 部分
$("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的当前值。
答案 0 :(得分:3)
每个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);
});