Jquery自动完成不会在动态加载的局部视图中被触发

时间:2016-03-04 04:09:23

标签: javascript jquery html

我在我的parial视图中执行动态加载的jquery时遇到问题。

Parial View

<input type="text" id="producerSearch" select-box-search-performer="true" select-box-search-url="TestUrl" select-box-search-performertype="Producer" select-box-search-destination="#Destination")" />

Jquery的

<script>
    $(document).ajaxSuccess(function() {
        $(":input[select-box-search-performer]").each(function () {
            var $element = $(this);
            $(this).autocomplete({
                source: function (request) {
                    var url = $element.attr("select-box-search-url");
                    var destSelect = $element.attr("select-box-search-destination");
                    var performertype =  $element.attr("select-box-search-performertype");
                    $.ajax({
                        async: false,
                        cache: false,
                        type: "POST",
                        url: url,
                        data: { "term": request.term, "productId":  @Model.ProductModel.ProductId, "performerType": performertype},
                        success: function (data) {
                            $(destSelect).empty();
                            for (var i = 0; i < data.length ; i++) {
                                $(destSelect).
                                    append($("<option></option>").attr("value", data[i].ID).text(data[i].Name));
                            }
                        }
                    });
                }
            });
        });
    });
</script>

有些讨论说&#34;需要包含ajaxSuccess(如上面的代码所示)。但是,这不会在动态加载的局部视图上触发jquery。

-Alan -

1 个答案:

答案 0 :(得分:0)

嗯,我想是因为你有一个局部视图,它是动态加载的。由于动态内容加载是ajax业务,因此每当您加载动态视图时,首先加载内容,然后触发 ajaxsuccess ,因此$(":input[select-box-search-performer]").each(function)可以正常工作,而不是之前这一点。

您需要做的是,您应该检查呈现动态视图的逻辑,并在呈现部分视图时从那里触发回调,然后执行此代码。