2012-10-16 35 views
5

Tôi gặp sự cố với Nice Scroll. Nó hoạt động tốt, nhưng khi tôi tải hình ảnh AJAX nó không hoạt động. Thật thú vị, khi tôi thay đổi kích thước cửa sổ, mở Firebug hoặc bất cứ điều gì, nó bắt đầu hoạt động.NiceScroll không hoạt động sau khi tải AJAX

Tôi có thể làm gì để tự động thực hiện việc này?

tôi đã cố gắng:

setTimeout(function(){ 
    $("window").trigger('resize'); 
}, 0); 

Sau khi chức năng tải AJAX, nhưng nó không hoạt động.

+0

Nhiều khả năng, bạn đang khởi tạo thoải mái cuộn trước A yêu cầu jax hoàn thành. Cố gắng khởi tạo cuộn đẹp trong trình xử lý sự kiện thành công của yêu cầu Ajax. – Tariqulazam

+0

Vấn đề là khi tôi đi đến trang chủ (nơi Ajax được tải) và nó hoạt động, nhưng khi tôi đi đến trang tĩnh (như liên hệ) và sau đó tôi nhấp vào mục menu tải ajax, sau đó nó không hoạt động thời điểm tôi thay đổi kích thước của cửa sổ. –

+0

Có thể bao gồm mã của bạn thành một câu đố để chúng tôi xem xét không? – Tariqulazam

Trả lời

12

Khi nội dung trên thay đổi div của bạn, bạn cần phải gọi phương thức thay đổi kích thước nicescroll.

$("your-div-name").getNiceScroll().resize() 

Hãy nhớ nếu kích thước hình ảnh không được đặt trong thẻ img, bạn cần gọi lại kích thước khi tất cả hình ảnh được tải đầy đủ.

0

Vui lòng sử dụng mã bên dưới để giải quyết sự cố của bạn. Nó hoạt động tốt với tải ajax.

$("MYSCROLLCONTAINERS").getNiceScroll().remove(); 
$("div[id^='ascrail']").remove(); 
jQuery("MYSCROLLCONTAINERS").niceScroll({ 
       autohidemode:false 
      }); 

Điều này phù hợp với tôi.

2

Ngoài câu trả lời của InuYaksa Nếu bạn không có quyền truy cập vào triển khai, bạn chỉ có thể triển khai chức năng di chuột trên trình bao bọc nội dung dưới dạng giải pháp thay thế.

// Call resize whenever mouse 
$("#scroll-area").mouseover(function() { 
    $("#scroll-area").getNiceScroll().resize(); 
}); 

từ: http://eureka.ykyuen.info/2013/05/07/jquery-nicescroll-plugin-doesnt-work-for-dynamic-content/

Cải thiện mouseover giải pháp

//in the case of scrolling content loaded via AJAX 
    $(document).on('mouseover','#scroll-area', function() { 
     $(this).getNiceScroll().resize(); 
    }); 

Sử dụng viewport/quấn

$(document).on('mouseover','#scroll-wrap', function() { 

    var widget_wrap=$(this); 
    var widget_viewport=$(this).parent(); 

    widget_viewport.getNiceScroll(widget_wrap).resize(); 

}); 
Các vấn đề liên quan