使用Jquery选择隐藏的元素值

时间:2011-03-20 04:06:48

标签: jquery html

假设我有一个像hmpery这样的表格。

我想在“保存点击”中找到groupid的值。

我收到了未定义的值

<table border="0" id="tableJoinList" cellpadding="4" cellspacing="5">
<tr><td colspan="3" align="left" style="padding-bottom:7px">
    <img src="../../Content/Images/doublelinegray.jpg" alt="doublelinegray.jpg" width="480px" height="4px" />
</td></tr>
    @foreach (var item in Model.Groups)
    {
        <tr>
            <td>
                @Html.ActionLink("Join", "Join", new { id = item.GroupID }, new { @class = "Join" })
                @Html.Hidden("groupid", item.GroupID, new { @class = "groupid" })
            </td>
            <td align="left">
                @item.GroupName
            </td>
            <td>
                @item.DateAdded
            </td>
        </tr>
    }
<tr><td colspan="3" align="left">
    <img src="../../Content/Images/doublelinegrayreverse.jpg" alt="doublelinegrayreverse.jpg" width="480px" height="4px" />
</td></tr>
</table>

<script type="text/javascript">
$(function () {
    $(".Join").live("click", function () {
        var html = "<tr><td colspan='3'>Enter Password: &nbsp;&nbsp;<input type='password' class='pwd' />";
        html += "&nbsp;&nbsp;<input type='button' class='Save' value='Save' /></td></tr>";

        $(this).closest("tr").after(html);

        $(".Save").live("click", function () {
            alert($(this).siblings(".pwd").val());
            var json = { Password: $(this).siblings(".pwd").val(), GroupID: $(this).prev("tr").find(".groupid").val() };
            alert($(this).parent("tr").prev("tr").children(".groupid").val());
            return false;
            $.ajax({
                url: "/Group/ConfirmPassword",
                type: "POST",
                dataType: 'json',
                data: JSON.stringify(json),
                contentType: "application/json; charset=utf-8",
                success: function (result) {
                    if (result.Success == true)
                        window.location.href = result.Url;
                    else
                        alert(result.ErrorMessage);
                    return false;
                }
            });
        });
        return false;
    });
});
</script>

1 个答案:

答案 0 :(得分:1)

好的,我发现了问题。使用.parent("tr")仅在DOM中上升一级,如果父级不是“tr”(在这种情况下实际上是“td”),则写​​入的方式是忽略其余部分。另外.children()只降低了一个级别,您需要使用.find()代替。

所以你的警报应该是这样的:

alert( $(this).closest("tr").prev("tr").find(".groupid").val() );

这是一个基本的demo