gpt4 book ai didi

c# - 将 jQuery 更新到 1.10.2 后,Ajax 调用后 jQuery 范围 slider 无法工作

转载 作者:行者123 更新时间:2023-12-03 12:43:09 25 4
gpt4 key购买 nike

我正在开发一个 asp.net C# MVC Web 应用程序,并提供一个 jquery UI 价格范围过滤器来根据所选价格范围过滤产品。结果产品是通过 Ajax 加载的,到目前为止一切似乎都工作正常。但是,升级到 jQuery 版本 1.10.2 和 jQuery UI 1.10.3 后,相同的 slider 在首次加载时可以工作,但在 Ajax 请求后无法加载。以下代码位于正在实现过滤器的页面上。

相同的代码可以在 jQuery 1.7.1 和 jQuery UI 1.10.0 上正常工作。

通过 Ajax 加载内容后, slider 似乎未初始化,但不知道为什么!这里可能出了什么问题?

$("#slider-range").slider({
range: true,
min: minValue,
max: maxValue,
values: [selectedMinValue, selectedMaxValue],
values: [selectedMinValue, selectedMaxValue],
slide: function (event, ui) {
//Note: Currency Custom formatting is not supported.
$(".currentMinPrice").html('@(Model.PriceRangeFilterContext.CurrencySymbol) ' + ui.values[0]);
$(".currentMaxPrice").html('@(Model.PriceRangeFilterContext.CurrencySymbol) ' + ui.values[1]);


},
change: function (event, ui) {

var url = removeParameter('@(currentURL)', "price");
var newUrl = url.replace(/&amp/g, '');
if (isAjaxRequest) {
callAjax(UpdateQueryString("price", ui.values[0] + "-" + ui.values[1], newUrl));
}
}
});
isAjaxRequest = true;
$(".currentMinPrice").html('@(Model.PriceRangeFilterContext.CurrencySymbol) ' + $("#slider-range").slider("values", 0));
$(".currentMaxPrice").html('@(Model.PriceRangeFilterContext.CurrencySymbol) ' + $("#slider-range").slider("values", 1));
}

Ajax函数

$.ajax(
{
url: url,
type: 'POST',
success: function (result)
{
// Result is in html
$('#catalog').replaceWith(result);
$('#ajax-loading').hide();
DisplayFilter();

//Lazy Loading
$("img.lazy").show().lazyload(
{
effect: "fadeIn"
});
$(window).trigger("scroll");
}
});

最佳答案

我认为您需要在渲染 slider 后对其进行初始化。您在初始渲染后创建的任何 DOM 元素都不会被您已经运行的 JavaScript 初始化或绑定(bind)。

因此,首先将初始化封装在函数中:

function initSlider(passedMin, passedMax)
{
$("#slider-range").slider({
range: true,
min: passedMin,
max: passedMax,
values: [selectedMinValue, selectedMaxValue],
values: [selectedMinValue, selectedMaxValue],
slide: function (event, ui) {
//Note: Currency Custom formatting is not supported.
$(".currentMinPrice").html('@(Model.PriceRangeFilterContext.CurrencySymbol) ' + ui.values[0]);
$(".currentMaxPrice").html('@(Model.PriceRangeFilterContext.CurrencySymbol) ' + ui.values[1]);


},
change: function (event, ui) {

var url = removeParameter('@(currentURL)', "price");
var newUrl = url.replace(/&amp/g, '');
if (isAjaxRequest) {
callAjax(UpdateQueryString("price", ui.values[0] + "-" + ui.values[1], newUrl));
}
}
});
isAjaxRequest = true;
$(".currentMinPrice").html('@(Model.PriceRangeFilterContext.CurrencySymbol) ' + $("#slider-range").slider("values", 0));
$(".currentMaxPrice").html('@(Model.PriceRangeFilterContext.CurrencySymbol) ' + $("#slider-range").slider("values", 1));
}

}

然后在 AJAX 中,成功时调用 init 函数

$.ajax(
{
url: url,
type: 'POST',
success: function (result)
{
// Result is in html
$('#catalog').replaceWith(result);
$('#ajax-loading').hide();
DisplayFilter();

//Lazy Loading
$("img.lazy").show().lazyload(
{
effect: "fadeIn"
});
$(window).trigger("scroll");

initSlider(newMin, newMax)
}
});

关于c# - 将 jQuery 更新到 1.10.2 后,Ajax 调用后 jQuery 范围 slider 无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23453249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com