我在我的parial视图中执行动态加载的jquery时遇到问题。
<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")" />
<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 -
答案 0 :(得分:0)
嗯,我想是因为你有一个局部视图,它是动态加载的。由于动态内容加载是ajax业务,因此每当您加载动态视图时,首先加载内容,然后触发 ajaxsuccess ,因此$(":input[select-box-search-performer]").each(function)
可以正常工作,而不是之前这一点。
您需要做的是,您应该检查呈现动态视图的逻辑,并在呈现部分视图时从那里触发回调,然后执行此代码。