假设我有一个像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: <input type='password' class='pwd' />";
html += " <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>
答案 0 :(得分:1)
好的,我发现了问题。使用.parent("tr")
仅在DOM中上升一级,如果父级不是“tr”(在这种情况下实际上是“td”),则写入的方式是忽略其余部分。另外.children()
只降低了一个级别,您需要使用.find()
代替。
所以你的警报应该是这样的:
alert( $(this).closest("tr").prev("tr").find(".groupid").val() );
这是一个基本的demo。