在struts2-jsp页面中使用jquery获取表的父索引值

时间:2013-11-20 06:12:42

标签: javascript jquery jsp

您好我想在下面的代码中获取使用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有效我可以用它来做这个..... ... 提前谢谢你。

2 个答案:

答案 0 :(得分:0)

应该是

var tr=$(this).parent().parent().index();

原因是$(this)会给你img元素。它的父元素是<td>元素,它的父元素是你感兴趣的<tr>元素。你添加了一个额外的parent()调用

答案 1 :(得分:0)

有两个问题

  1. 您正在使用this在ajax成功处理程序中引用所单击的元素,但在处理程序this内部并未引用该元素。解决方案是使用闭包变量
  2. 使用.closet('tr')获取祖先tr元素
  3. 尝试

    $(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);
                },