如何选择具有查找语句的元素?

时间:2016-05-19 10:30:19

标签: jquery html

我需要使用select数据填充json元素,但我现在无法选择目标元素。我在控制台中没有任何错误。可能是什么问题?

jQuery的:

$('#accordion1 select[name$=Tarrif]').change(function () {
    $.ajax({
        url: '/Train/TrianFood',
        data: { Tarrif: $(this).val() },
        type: "POST",
        success: function (result) {
            if (result.Result == false) {        
                for (var i = 0; i <result.obj.length; i++) {
                    $(this).closest('.person-information').find('select[name$=Food]').empty().append(new Option(result.obj[i].ServiceType, result.obj[i].ServiceTypeCode));
                }
            } else {
                $(this).closest('.person-information').find('select[name$=Food]').empty().append(new Option('بدون غذا', 1));
            }    
        },
        error: function () { }
    });
    //-------------
});

<div class="panel style1">
    <h4 class="panel-title">
        <a href="#acc@(j)" data-toggle="collapse" data-parent="#accordion1">مسافر @(j + 1) </a>
    </h4>
    <div class="panel-collapse collapse @if(j==0) {<text> in </text>}" id="acc@(j)">
        <div class="panel-content">
            <div class="person-information">
                <div class="form-group row">
                    <div class="col-md-4 col-md-push-8">
                        <label>نام </label>
                        <input type="text" name="[@(j)].FirstName" class="input-text full-width" lang="fa-IR" data-val="true" data-val-required="لطفا نام را وارد نمایید." />
                        <span class="field-validation-valid" data-valmsg-for="[@(j)].FirstName" data-valmsg-replace="true"></span>
                    </div>
                    <div class="col-md-4">
                        <label>نام خانوادگی</label>
                        <input type="text" name="[@(j)].LastName" class="input-text full-width" lang="fa-IR" data-val="true" data-val-required="لطفا نام خانوادگی را وارد نمایید." />
                        <span class="field-validation-valid" data-valmsg-for="[@(j)].LastName" data-valmsg-replace="true"></span>
                    </div>
                    <div class="col-md-4 col-md-pull-8">
                        <label>کد ملی</label>
                        <input type="text" name="[@(j)].NationalCode" class="input-text full-width" lang="fa-IR" data-val-required="لطفا کد ملی را وارد نمایید." placeholder="کد ملی 10 رقمی" data-val="true" data-val-length="کد ملی باید 10 رقمی باشد." data-val-length-max="10" data-val-length-min="10" data-val-regex="فقط عدد وارد نمایید." data-val-regex-pattern="(^[0-9']+$)" />
                        <span class="field-validation-valid" data-valmsg-for="[@(j)].NationalCode" data-valmsg-replace="true"></span>
                    </div>
                </div>
                <div class="form-group row">
                    <div class="col-md-4 datepicker-wrap">
                        <label>تاریخ تولد</label>
                        <input type="text" name="[@(j)].DateOfbirth" autocomplete="off" class="input-text full-width" placeholder="--/--/----" data-val="true" data-val-required="لطفا تاریخ تولد را وارد نمائید." />
                        <span class="field-validation-valid" data-valmsg-for="[@(j)].DateOfbirth" data-valmsg-replace="true"></span>
                    </div>
                    <div class="col-md-4 col-md-push-4">
                        <label>جنسیت</label>
                        <div class="selector">
                            <select class="full-width" name="[@(j)].SexCode">
                                <option value="1">مرد</option>
                                <option value="2">زن</option>
                                <option value="3">خانواده</option>
                            </select>
                        </div>
                    </div>
                    <div class="col-md-4  col-md-pull-4">
                        <label>نوع مسافر</label>
                        <div class="selector">
                            <select class="full-width" name="[@(j)].Tarrif">
                                @if (TempData["Tarrif"] != null) {                                                                 List<GetAgentAllowedTarrif> lists = new List<GetAgentAllowedTarrif>();
                                    lists = (List<GetAgentAllowedTarrif>)TempData["Tarrif"];
                                    foreach (var item in lists) {
                                        <option value="@item.FTariffCode"> @item.TarriffName</option>
                                    }
                                }
                            </select>
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-md-4 pull-right">
                        <label>غذا</label>
                        <div class="selector">
                            <select class="full-width" name="[@(j)].Food">
                                <option>بدون 1</option>
                                <option value="2">بدون 2</option>
                            </select>
                        </div>
                    </div>
                </div>
            </div>
        </div><!-- end content -->
    </div>
</div>

2 个答案:

答案 0 :(得分:1)

试试这个,

在调用this请求之前将current存储到AJAX变量中,然后将您在this块内编写的success替换为current

愿这对你有帮助..

答案 1 :(得分:0)

试试这个:

$('#accordion1 select[name$=Tarrif]').change(function () {
    var this = $(this);
    $.ajax({
        url: '/Train/TrianFood',
        data: { Tarrif: this.val() },
        type: "POST",
        success: function (result) {
            if (result.Result == false) {
                for (var i = 0; i <result.obj.length; i++) {
                    this.closest('.person-information').find('select[name$=Food]').empty().append(new Option(result.obj[i].ServiceType, result.obj[i].ServiceTypeCode));
                }
            } else {
                this.closest('.person-information').find('select[name$=Food]').empty().append(new Option('بدون غذا', 1));
            }
        },
        error: function () { }
    });
});