您好我想在下面的代码中获取使用jquery的索引:
<s:iterator value="uploadList" var="m">
<tr> <- this tr id i want
<td><s:property value="%{#m.fileId}" /></td>
<td><s:property value="%{#m.fileName}" /></td>
<td><img src="images/generate.png" title="Generate Report"></td>
<td><a href="#"><img src="images/refresh.png" title="Refresh" class="refresh" onclick="refreshRecord(<s:property value="%{#m.fileId}" />);"></a></td>
</s:if>
</tr>
</s:iterator>
</table>
这是我的jquery-ajx:
<script type="text/javascript" src="js/jquery-1.9.1.js"></script>
<link rel="stylesheet" type="text/css" href="css/style1.css" />
<link rel="stylesheet" type="text/css" href="css/button.css" />
<link href="css/common-style.css" rel="stylesheet" type="text/css" />
<style>
a{
color:white;
text-decoration:none;
}
</style>
<script type="text/javascript">
var id;
function refreshRecord(value)
{
id = value;
alert(id);
}
$(document).ready(function(){
$('.refresh').click(function(){
var fileId=id;
alert("ajax id is "+fileId);
$.ajax({
type:'post',
url:'checkStatusAndNumRecs',
data:{fileId:fileId},
success:function(data)
{
var obj=data.split(':');
var tr=$(this).parent().parent().parent().index();
alert("your tr is:"+tr);
},
但问题是我得到-1作为index.please帮助我。我做错了什么,是jquery-1.9.1.js有效我可以用它来做这个..... ... 提前谢谢你。
答案 0 :(得分:0)
应该是
var tr=$(this).parent().parent().index();
原因是$(this)
会给你img元素。它的父元素是<td>
元素,它的父元素是你感兴趣的<tr>
元素。你添加了一个额外的parent()调用
答案 1 :(得分:0)
有两个问题
this
在ajax成功处理程序中引用所单击的元素,但在处理程序this
内部并未引用该元素。解决方案是使用闭包变量.closet('tr')
获取祖先tr
元素尝试
$(document).ready(function () {
$('.refresh').click(function () {
var fileId = id;
alert("ajax id is " + fileId);
//a closure variable to hold the reference
var $this = $(this);
$.ajax({
type: 'post',
url: 'checkStatusAndNumRecs',
data: {
fileId: fileId
},
success: function (data) {
var obj = data.split(':');
//use .closest() to get the tr
var tr = $this.closest('tr').index();
alert("your tr is:" + tr);
},