我使用struts 2 <s:iterator>
标记将数据添加到jsp页面。它基本上是这样的。
<s:iterator value="applicants" var="applicant">
<label>Applicant Name</label>
<s:property value="#applicant.firstName"/>
<s:property value="#applicant.lastName"/>
<button class="btn btn-success">Approve</button>
<s:hidden class="applicantid" value="%{#applicant.id}"/>
</s:iterator>
当我点击批准按钮时,如何在jquery中获取相关的申请人ID到变量?我尝试了nearest(),siblings()方法,但它没有工作。任何帮助将不胜感激。
答案 0 :(得分:2)
您使用的是不存在的class
而不是cssClass
。一些Struts2标签允许动态属性,因此在其中一些标记上,class
会起作用,而在其他标准上更严格,它会引发一个解析错误。始终在Struts标记中使用cssClass
和cssStyle
。
那说,你的解决方案
var hidden_value = $(this).closest('div').find('input[type="hidden"]').val();
依赖于Struts2主题生成的html,如果更改项目,表单,元素或甚至升级Struts库的主题,可能会更改。您应该使用适当的选择器,在本例中为第一类:
var hidden_value = $(".applicantid").val();
然而,这将适用于具有该类的每个元素。
如果你需要将它应用于单个元素(按下按钮旁边的元素),只需为每个隐藏元素生成一个唯一的id
并使用id选择器,如:
<s:iterator value="applicants" var="applicant" status="ctr">
...
<s:hidden id="applicantid_%{#ctr.index}"
cssClass="applicantid"
value="%{#applicant.id}"/>
</s:iterator>
和
var hidden_value = $("#applicantid_1").val();
在某处检索唯一编号,例如,基于迭代也在按钮的id(如button_1
)中生成,使用javascript提取并用于挂载隐藏ID(applicantid_1
)。
答案 1 :(得分:0)
$('.btn').on('click', function(){
var hidden_value = $('.applicantid').val();
console.log(hidden_value);
}
这是使用按钮中的类btn和它的on click事件,使用applicantid类作为选择器,将隐藏字段的值赋给hidden_value变量。
答案 2 :(得分:0)
我终于能够使用这个
来做到这一点var hidden_value = $(this).closest('div').find('input[type="hidden"]').val();