如何使用jQuery唯一地标识表(具有多行)的行中的列的值

时间:2011-05-24 10:22:13

标签: jquery

<head>
    <script type="text/javascript">
        $(document).ready(function() {

            $(".viewLink").click(function() 
            {
                var requisiteId = $('.viewLink').attr('value');
                alert(requisiteId);
                var dataString = 'id='+ requisiteId;

                $.ajax({
                type: "POST",
                url: "checkRequestExe.php",
                data: dataString,
                cache: false,

                success: function(data)
                {
                    $("#individualRequisite").show();
                    $("#eachRequisite tr").remove();
                    if (data != false)
                    {   
                        $("#eachRequisite").prepend(data);
                        $("#eachRequisite").hide().fadeIn('slow');
                    }
                }

                });

                return false;
            });         
        });
    </script>
</head>

<body>
<div style="width:752px; height:330px; overflow:auto;">
            <table class="record" cellspacing="0" cellpadding="5">
                <tr style="background-color:#808080; font-size:12px; color:white; font-weight:bold;">
                    <td width="400">Title</td>
                    <td width="100">Requestor</td>
                    <td width="145">Date Request</td>
                    <td width="80">Status</td>
                </tr>

                <?
                    $count=0;   
                    while ($data = mysql_fetch_array($results))
                    {       
                        $requisiteId = $data["RequisiteId"];
                        $title = $data["Title"];
                        $userId = $data["UserId"];
                        $date = $data["DateRequest"];
                        $status = $data["Status"];

                        $color = ($count%2==0)?'CCCCFF':'E8E8E8';
                ?>
                        <tr style="background-color:#<?=$color?>; color:black; font-weight:bold;">
                            <td><?=$title?></a></td>
                            <td><?=$userId?></a></td>
                            <td><?=$date?></td>
                            <td>
                                <?
                                    if ($status == 0)   
                                    {
                                        $word = "Pending";
                                    }
                                    else
                                    {
                                        $word = "Completed";
                                    }
                                    echo "<a href='#individualRequisite' class='viewLink' value='$requisiteId'>$word</a>";
                                ?>
                            </td>       

                        </tr>
                <?
                        $count++;
                    }
                ?>
            </table>
        </div>
</body>

如何唯一地标识类viewLink,以便在单击任何具有该类的锚时,锚的值(&#34; requisiteId&#34;)被传递到jquery并随后被传递到另一个脚本来处理?

目前的问题是它将不断被最新的requisiteId取代。 任何解决方案?

问题在于[var requisiteId = $('.viewLink').attr('value');] 即使我点击了不同行的锚点,requisiteId总是一样的。

2 个答案:

答案 0 :(得分:1)

我认为不是行

var requisiteId = $('.viewLink').attr('value');

你想要

var requisiteId = $(this).attr('value');

答案 1 :(得分:0)

您的问题是有多个viewLink对象,因此当您运行$('。viewLink')时,您实际上正在返回一个项目列表。

如果您在列表中调用.attr(),您将获得第一个。你需要这样做:

$(".viewLink").click(function() 
{
     var requisiteId = $(this).attr('value');

这将返回目标项目的attr。