正在获取父<tr>在struts2 jsp页面中使用jquery的表的索引值

Getting the parent <tr> index value of a table using jquery in struts2-jsp page

本文关键字:jquery 索引值 struts2 lt 获取 tr gt jsp      更新时间:2023-09-26

嗨,我正试图在下面的代码中获得使用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作为索引。请帮我做这件事。如果我做错了什么,jquery-1.9.1.js有效吗?我可以用它来做吗。。。。。。。。提前谢谢。

应该是

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

原因是$(this)会给你img元素。它的父元素是<td>元素,父元素是您感兴趣的<tr>元素

有两个问题

  1. 您使用this在ajax成功处理程序中引用单击的元素,但在处理程序this中不引用该元素。解决方案是使用闭包变量
  2. 使用.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);
            },