我对Nice Scroll有疑问。它工作正常,但是当我加载AJAX图像时,它不起作用。有趣的是,当我调整窗口大小,打开Firebug或其他任何东西时,它开始工作。
如何自动完成此操作?
我试过了:
setTimeout(function(){
$("window").trigger('resize');
}, 0);
在AJAX加载功能之后,但它不起作用。
答案 0 :(得分:12)
当div上的内容发生变化时,您需要调用nicescroll resize方法。
$("your-div-name").getNiceScroll().resize()
请记住,如果未在img标记中设置图像大小,则需要在所有图像完全加载时调用resize。
答案 1 :(得分:2)
除了InuYaksa的答案之外如果您无法访问实现,您可以在内容包装器上实现鼠标悬停功能作为解决方法。
// Call resize whenever mouse
$("#scroll-area").mouseover(function() {
$("#scroll-area").getNiceScroll().resize();
});
来自:http://eureka.ykyuen.info/2013/05/07/jquery-nicescroll-plugin-doesnt-work-for-dynamic-content/
改进鼠标悬停解决方案
//in the case of scrolling content loaded via AJAX
$(document).on('mouseover','#scroll-area', function () {
$(this).getNiceScroll().resize();
});
使用viewport / wrap
$(document).on('mouseover','#scroll-wrap', function () {
var widget_wrap=$(this);
var widget_viewport=$(this).parent();
widget_viewport.getNiceScroll(widget_wrap).resize();
});
答案 2 :(得分:0)
请您使用以下代码解决您的问题。它适用于ajax加载。
$("MYSCROLLCONTAINERS").getNiceScroll().remove();
$("div[id^='ascrail']").remove();
jQuery("MYSCROLLCONTAINERS").niceScroll({
autohidemode:false
});
这对我有用。