我正在尝试使用jquery选择一些隐藏字段来从表中的某一行检索某些值以进行ajax调用。第一个变量(ebId)检索得很好,但所有其他变量都没有被设置。他们都是空的。我不能使用隐藏字段的名称,因为这些隐藏字段是动态创建的,并且具有相同的相同。所以我正在尝试使用课程。知道为什么我选择最后3个变量(_product,_applicantType,_ssn)的方式不起作用吗?
这是JQuery和相关的HTML
$('.submissionStatus').click(function () {
var _ebId = $(this).next('.ebId').val();
var _product = $(this).next('.product').val();
var _applicantType = $(this).next('.applicantType').val();
var _ssn = $(this).next('.ssn').val();
$.ajax({
type: 'GET',
data: { ebId: _ebId, product: _product, applicantType: _applicantType, ssn: _ssn },
url: '@Url.Action("GetSeverityErrors", "AppListing")',
success: function (data) {
alert('Call success')
$(this).next('.loaded').val(true);
},
error: function (xhr, status, error) {
alert('An Error Occured.');
}
});
});
<input type="hidden" class="ebId" value="@item.ElectedBenefitId" />
<input type="hidden" class="product" value="@item.Product" />
<input type="hidden" class="applicantType" value="@item.ApplicantType" />
<input type="hidden" class="ssn" value="@item.Ssn" />
更多HTML洞察力:
<td align="left">
<a style="color:red;" class="submissionStatus" href="javascript: void(0)" title="SubmissionStatus">@item.SubmissionStatus.ToPrettyString()</a>
<input type="hidden" class="ebId" value="@item.ElectedBenefitId" />
<input type="hidden" class="product" value="@item.Product" />
<input type="hidden" class="applicantType" value="@item.ApplicantType" />
<input type="hidden" class="ssn" value="@item.Ssn" />
<input type="hidden" class="loaded" value="false" />
</td>
答案 0 :(得分:1)
请注意closest()
根据其参数选择最接近的父元素,请尝试:
var _ebId = $(this).siblings('input.ebId').val();
var _product = $(this).siblings('input.product').val();
var _applicantType = $(this).siblings('input.applicantType').val();
var _ssn = $(this).siblings('input.ssn').val();
答案 1 :(得分:0)
$('.submissionStatus').click(function () {
var storThis = this;
var _ebId = $(storThis).next('.ebId').val();
var _product = $(storThis).next('.product').val();
var _applicantType = $(storThis).closest('.applicantType').val();
var _ssn = $(storThis).closest('.ssn').val();