Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于查找步骤的JQuery父选择器_Javascript_Jquery_Html_Asp.net Mvc_Jquery Steps - Fatal编程技术网

Javascript 用于查找步骤的JQuery父选择器

Javascript 用于查找步骤的JQuery父选择器,javascript,jquery,html,asp.net-mvc,jquery-steps,Javascript,Jquery,Html,Asp.net Mvc,Jquery Steps,我使用的是jquery步骤控件。表单在onFinished()事件中发布,并触发Ajax请求。如果出现任何验证错误,我将从服务器返回以下信息: { "ErrorMessages": [{ "PropertyName":"Complainant.Address.StreetName", "ErrorMessage":"The complainant street name is required." },

我使用的是jquery步骤控件。表单在
onFinished()
事件中发布,并触发Ajax请求。如果出现任何验证错误,我将从服务器返回以下信息:

{
    "ErrorMessages": 
        [{
            "PropertyName":"Complainant.Address.StreetName",
            "ErrorMessage":"The complainant street name is required."
        },
        {
            "PropertyName":"Complainant.Address.Suburb",
            "ErrorMessage":"The complainant suburb is required."
        }]
}
接下来在jQuery中,我找到合适的span元素(它是用ASP.NET MVC的
@Html.ValidationMessageFor
创建的),并给它提供验证消息:

if (response.ErrorMessages != null) {
    for (var i = 0; i < response.ErrorMessages.length; i++) {
        var validationSpan = $("span[data-valmsg-for='" + response.ErrorMessages[i].PropertyName + "'");
        validationSpan.html(response.ErrorMessages[i].ErrorMessage);
        validationSpan.removeClass("field-validation-valid");
        validationSpan.addClass("field-validation-error");
    }
}
我有以下html结构:

<div>
    <h1>Complaint details</h1>
    <section>
        <div class="step-div" step="0">
            <div class="form-group">
                @Html.LabelFor(model => model.Complainant.Address.StreetName, new { @class = "col-md-3 control-label" })
                <div class="col-md-8">
                    @Html.TextBoxFor(model => model.Complainant.Address.StreetName, new { @class = "form-control" })
                    @Html.ValidationMessageFor(model => model.Complainant.Address.StreetName)
                </div>
            </div>
        </div>
    </section>
<div>
这应该会给我直接在
中的
,但它似乎没有。如果我记录这个
部分
变量,我会得到以下结果:

{ length: 0, prevObject: Object, context: HTMLDocument ? 134 }

呈现的

步骤2:

<a id="steps-uid-0-t-1" href="#steps-uid-0-h-1" aria-controls="steps-uid-0-p-1"><span class="number">2.</span> Complaint details</a>

尝试
.parents()
而不是
.parent()
。更好的方法是,尝试
.closest()

.parents()
获取与给定选择器匹配的所有祖先

.parent()
只查找直接父对象

.closest()
查找元素本身和祖先以返回与给定选择器匹配的第一个元素。

尝试
.parents()
而不是
.parent()
。更好的方法是,尝试
.closest()

.parents()
获取与给定选择器匹配的所有祖先

.parent()
只查找直接父对象


.closest()
查找元素本身和祖先,以返回与给定选择器匹配的第一个元素。

var section=validationSpan.closest(.step div”)
var section=validationSpan.closest(“.step div”)
{ length: 0, prevObject: Object, context: HTMLDocument ? 134 }
<a id="steps-uid-0-t-0" href="#steps-uid-0-h-0" aria-controls="steps-uid-0-p-0"><span class="number">1.</span> Complainant details</a>
<a id="steps-uid-0-t-1" href="#steps-uid-0-h-1" aria-controls="steps-uid-0-p-1"><span class="number">2.</span> Complaint details</a>