0

我想使用JScrollPane來簡化我的應用程序的表滾動的實現。有些表非常龐大,這樣我就實現了表中元素的動態加載。裝載然而,工作正常,當表加載枝條的新元素,方法scrollToY(INT)不工作:當使用jScrollPane時無法在Javascript中滾動

Scroll = { 

init: function (idComponente, componenteAAtualizar, comando) { 
    var componente = $(PrimeFaces.escapeClientId(idComponente)); 
    componente.container = $(PrimeFaces.escapeClientId(idComponente + ":container")); 
    componente.idComponenteAAtualizar = PrimeFaces.escapeClientId(componenteAAtualizar); 
    componente.desativado = false;; 
    componente.posicao=0; 
    componente.comando = comando; 

    componente.container[0].oncomplete = function (xhr, status, args) { 
     var idEscapadoPainelLista = PrimeFaces.escapeClientId(idComponente); 
     if (args != null) 
      componente.desativado = args.desativarLiveScroll; 
     componente.adicionarListenerScroll(); 
    } 

    componente.adicionarListenerScroll = function() { 
     $('.ui-datatable-scrollable-body').jScrollPane(); 
     $('.ui-datatable-scrollable-body').data('jsp').scrollToY(componente.posicao); 
     $('.ui-datatable-scrollable-body').bind('jsp-scroll-y', componente.atualizarElementos); 
    } 

    componente.removerListenerScroll = function() { 
     $('.ui-datatable-scrollable-body').unbind('jsp-scroll-y'); 
    } 

    componente.atualizarElementos = function(event, scrollPositionY, isAtTop, isAtBottom) { 
     if (!componente.desativado && isAtBottom){ 
      componente.posicao=scrollPositionY; 
      componente.removerListenerScroll(); 
      comando(); 
     } 
    }; 

    componente.adicionarListenerScroll(); 
} 
}; 

爲什麼我不能滾動到我想要的位置?

回答

0

我解決了使用JQuery滾動到位置的問題,而不是使用jScrollPane的scrollToY函數。因此,代碼從此改變:

componente.adicionarListenerScroll = function() { 
    $('.ui-datatable-scrollable-body').jScrollPane(); 
    $('.ui-datatable-scrollable-body').data('jsp').scrollToY(componente.posicao); 
    $('.ui-datatable-scrollable-body').bind('jsp-scroll-y', componente.atualizarElementos); 
} 

這樣:

componente.adicionarListenerScroll = function() { 
     $('.ui-datatable-scrollable-body').scrollTop(componente.posicao); 
     $('.ui-datatable-scrollable-body').jScrollPane(); 
     $('.ui-datatable-scrollable-body').bind('jsp-scroll-y', componente.atualizarElementos); 
}