我目前在让 jquery noUISlider 处理附加元素时遇到问题。我正在通过 ajax 将新元素附加到我的 DOM 中。这些元素没有启用 noUiSlider。我的代码如下。如果有人过去解决了这个问题,将不胜感激:
这是最初用于为每个项目创建滑块的代码:如您所见,我只是遍历带有滑块标记的 dom 元素,并使用带有一些参数的库本机函数
$('.slider').each(function()
{
// get prod id
var id = $(this).attr('data-id');
// get max price of product
var max = parseInt($(this).attr('data-max'));
// get current price of product
var current = parseInt($(this).attr('data-current'));
// initiate slider
$(this).noUiSlider({
start: current,
step: 1,
range: {
'min': 1,
'max': max,
},
connect:'lower'
});
// link slider to input
$(this).Link('lower').to($('#output-'+id));
// slider event handler
$(this).on({
// on slider change
change: function()
{
// get product form
var form = $('#update-'+id);
// initiate AJAX call
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: form.serialize(),
dataType: "json",
success: function(data){
// update UI
var ui = $('#product-'+id).find('.status');
ui.fadeOut(300);
ui.fadeIn(300);
}
});
}
});
});
});
这是我添加元素的代码
// exectute paginate
$.ajax({
url: paginate_link,
type: "GET",
dataType: "HTML",
success: function(data) {
// generate next page
var next_page = page + 1;
// append products
$('.grid-products').append(data);
// check if we still have more
if(next_page <= max_page)
{
// increment page counter
$('.lazy-paginate').attr('data-page', next_page);
}
else
{
// hide
$('.lazy-paginate').addClass('resp-hidden');
}
}
})
现在的问题是这些附加元素没有可用的 noUISlider。我不能简单地再次运行 ('slider').noUISlider ,因为这将重置页面上可能已更改其值的所有元素。无论如何,仅在新元素上使用与第一次相同的设置再次运行滑块功能。
任何帮助将不胜感激。谢谢